]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSsegmentationSSD.h
In v1 geometry cluster should be attached to sensor according to sensor VIDs, rather...
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSSD.h
1 #ifndef ALIITSSEGMENTATIONSSD_H
2 #define ALIITSSEGMENTATIONSSD_H
3
4 #include "AliITSsegmentation.h"
5
6 //////////////////////////////////////////////////////
7 // Segmentation class for SSD                       //
8 //                                                  //
9 //////////////////////////////////////////////////////
10
11 /* $Id$ */
12
13 class AliITSsegmentationSSD :
14 public AliITSsegmentation {
15  public:
16
17     AliITSsegmentationSSD(Option_t *opt="");
18     AliITSsegmentationSSD(const AliITSsegmentationSSD &source);
19     virtual ~AliITSsegmentationSSD(){}
20     AliITSsegmentationSSD& operator=(const AliITSsegmentationSSD &source);
21
22
23     // Strip size  
24     virtual void    SetPadSize(Float_t pitch,Float_t /* d */)
25         {fPitch=pitch;}
26
27     // Maximum number of strips along the two coordinates  
28     virtual void    SetNPads(Int_t p1,Int_t /* d */){fNstrips=p1;}
29     // Returns the maximum number of cells (digits) posible
30     virtual Int_t   GetNPads() const {return 2*fNstrips;}
31
32
33     // Set stereo angles Pside-Nside 
34     virtual void    SetAngles(Float_t pa=0.0075, Float_t na=0.0275) 
35                          {fStereoP=pa; fStereoN=na;}
36
37     // Set stereo angles Pside-Nside 
38     // Transform from real coordinates to strips
39     virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN) const;
40     // Transform from strips to real coordinates
41             void    GetPadCxz(Float_t iP, Float_t iN, Float_t &x , Float_t &z) const;
42     virtual void    GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z) const { GetPadCxz((Float_t) iP, (Float_t) iN, x, z); }
43     virtual void    GetPadTxz(Float_t &x , Float_t &z) const;
44     // Transformation from Geant cm detector center local coordinates
45     // to detector P and N side strip numbers..
46     virtual Bool_t  LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN) const;
47     // Transformation from detector segmentation/cell coordiantes starting
48     // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
49     // and the corresponding x value..
50     virtual void    DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z) const;
51
52     virtual Int_t    GetNumberOfChips() const {
53       return fgkNchipsPerSide;
54     }
55     virtual Int_t    GetMaximumChipIndex() const{
56       return fgkNchipsPerSide*2-1;
57     }
58     virtual Int_t    GetChipFromLocal(Float_t xloc, Float_t zloc) const;
59     virtual Int_t    GetChipFromChannel(Int_t ix, Int_t iz) const;
60     virtual Int_t    GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t xmin, Float_t xmax) const;
61
62     virtual void Init();
63
64     // Strip size in x
65     virtual Float_t Dpx(Int_t) const {return fPitch;}
66     // Strip size in z 
67     virtual Float_t Dpz(Int_t) const {return fDz;}
68     // Maximum number of Strips in x
69     virtual Int_t    Npx() const {return fNstrips;}
70     // Maximum number of Strips in z
71     virtual Int_t    Npz()const {return 1;}
72
73     // Angles : Pside stereo angle-Nside stereo angle
74      virtual void Angles(Float_t &aP,Float_t &aN) const;
75      virtual void SetLayer(Int_t l);
76      virtual Int_t GetLayer() const {return fLayer;}
77     // Print Default parameters
78      virtual void PrintDefaultParameters() const;
79
80   protected:
81
82   virtual void Copy(TObject &obj) const; 
83
84   Int_t      fNstrips;       // Number of strips in x 
85   Float_t    fStereoP;       // Stereo angle for Pside (rad)
86   Float_t    fStereoN;       // Stereo angle for Nside (rad)
87   Float_t    fPitch;         // Pitch of the strips
88   
89   Int_t      fLayer;           //! layer number (5 or 6)
90   static const Float_t fgkDxDefault;  // Default value for fDx
91   static const Float_t fgkDzDefault;  // Default value for fDz
92   static const Float_t fgkDyDefault;  // Default value for fDy
93   static const Float_t fgkPitchDefault; //Default value for fPitch
94   static const Int_t fgkNstripsDefault; //Default value for fNstrips
95   static const Int_t fgkNchipsPerSide;    //number of chips per side
96   static const Int_t fgkNstripsPerChip;    //number of strips per chip
97
98   ClassDef(AliITSsegmentationSSD,4) //Segmentation class for SSD 
99 };
100
101 #endif