]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSsegmentationSSD.h
Making the cluster finder ignore digits with large RO cycle values
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSSD.h
... / ...
CommitLineData
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
13class AliITSsegmentationSSD :
14public 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