Line data Source code
1 : #ifndef ALIITSSEGMENTATION_H
2 : #define ALIITSSEGMENTATION_H
3 :
4 : #include <TObject.h>
5 : #include "AliLog.h"
6 : #include "AliITSgeom.h"
7 :
8 : /* $Id$ */
9 :
10 : //----------------------------------------------
11 : // -
12 : // ITS segmentation virtual base class -
13 : // -
14 : //----------------------------------------------
15 : class TF1;
16 : class AliITSsegmentation :
17 : public TObject {
18 : public:
19 : AliITSsegmentation();
20 : AliITSsegmentation(const AliITSsegmentation& source);
21 : virtual ~AliITSsegmentation();
22 : AliITSsegmentation& operator=(const AliITSsegmentation &source);
23 : // Set Detector Segmentation Parameters
24 : //
25 : // Detector size
26 : virtual void SetDetSize(Float_t p1,Float_t p2,Float_t p3)
27 1026 : {fDx=p1; fDz=p2; fDy=p3;}
28 : // Cell size
29 0 : virtual void SetPadSize(Float_t,Float_t) {MayNotUse("SetPadSize");}
30 : // Maximum number of cells along the two coordinates
31 : virtual void SetNPads(Int_t,Int_t) = 0;
32 : // Returns the maximum number of cells (digits) posible
33 : virtual Int_t GetNPads() const = 0;
34 : // Set layer
35 0 : virtual void SetLayer(Int_t) {MayNotUse("SetLayer");}
36 : // Number of Chips
37 0 : virtual Int_t GetNumberOfChips() const {MayNotUse("GetNumberOfChips"); return 0;}
38 0 : virtual Int_t GetMaximumChipIndex() const {MayNotUse("GetNumberOfChips"); return 0;}
39 : // Chip number from local coordinates
40 0 : virtual Int_t GetChipFromLocal(Float_t, Float_t) const {MayNotUse("GetChipFromLocal"); return 0;}
41 0 : virtual Int_t GetChipsInLocalWindow(Int_t* /*array*/, Float_t /*zmin*/, Float_t /*zmax*/, Float_t /*xmin*/, Float_t /*xmax*/) const {MayNotUse("GetChipsInLocalWindow"); return 0;}
42 : // Chip number from channel number
43 0 : virtual Int_t GetChipFromChannel(Int_t, Int_t) const {MayNotUse("GetChipFromChannel"); return 0;}
44 :
45 : // Transform from real to cell coordinates
46 : virtual void GetPadIxz(Float_t,Float_t,Int_t &,Int_t &) const = 0;
47 : // Transform from cell to real coordinates
48 : virtual void GetPadCxz(Int_t,Int_t,Float_t &,Float_t &) const = 0;
49 : // Local transformation of real local coordinates -
50 : virtual void GetPadTxz(Float_t &,Float_t &) const = 0;
51 : // Transformation from Geant cm detector center local coordinates
52 : // to detector segmentation/cell coordiantes starting from (0,0).
53 : virtual Bool_t LocalToDet(Float_t,Float_t,Int_t &,Int_t &) const = 0;
54 : // Transformation from detector segmentation/cell coordiantes starting
55 : // from (0,0) to Geant cm detector center local coordinates.
56 : virtual void DetToLocal(Int_t,Int_t,Float_t &,Float_t &) const = 0;
57 : // Initialisation
58 : virtual void Init() = 0;
59 : //
60 : // Get member data
61 : //
62 : // Detector length
63 107786 : virtual Float_t Dx() const {return fDx;}
64 : // Detector width
65 109672 : virtual Float_t Dz() const {return fDz;}
66 : // Detector thickness
67 27752 : virtual Float_t Dy() const {return fDy;}
68 : // Cell size in x
69 : virtual Float_t Dpx(Int_t) const = 0;
70 : // Cell size in z
71 : virtual Float_t Dpz(Int_t) const = 0;
72 : // Maximum number of Cells in x
73 : virtual Int_t Npx() const = 0;
74 : // Maximum number of Cells in z
75 : virtual Int_t Npz() const = 0;
76 : // Layer
77 0 : virtual Int_t GetLayer() const {MayNotUse("GetLayer"); return 0;}
78 : // Set hit position
79 : // virtual void SetHit(Float_t, Float_t) {}
80 : // angles
81 : virtual void Angles(Float_t& /* p */, Float_t& /* n */) const
82 0 : {MayNotUse("Angles");}
83 :
84 : //
85 : // Get next neighbours
86 : virtual void Neighbours(Int_t,Int_t,Int_t*,Int_t[10],Int_t[10]) const
87 0 : {MayNotUse("Neighbours");}
88 :
89 : // Function for systematic corrections
90 : // Set the correction function
91 0 : virtual void SetCorrFunc(TF1* fc) {fCorr = fc;}
92 : // Get the correction Function
93 0 : virtual TF1* CorrFunc() {return fCorr;}
94 : // Print Default parameters
95 : virtual void PrintDefaultParameters() const = 0;
96 :
97 : protected:
98 :
99 : virtual void Copy(TObject &obj) const;
100 :
101 : Float_t fDx; //SPD: Full width of the detector (x axis)- microns
102 : //SDD: Drift distance of the 1/2detector (x axis)-microns
103 : //SSD: Full length of the detector (x axis)- microns
104 : Float_t fDz; //SPD: Full length of the detector (z axis)- microns
105 : //SDD: Full Length of the detector (z axis) - microns
106 : //SSD: Full width of the detector (z axis)- microns
107 : Float_t fDy; //SPD: Full thickness of the detector (y axis) -um
108 : //SDD: Full thickness of the detector (y axis) - microns
109 : //SSD: Full thickness of the detector (y axis) -um
110 : TF1* fCorr; // correction function
111 :
112 118 : ClassDef(AliITSsegmentation,2) //Segmentation virtual base class
113 : };
114 : #endif
|