Config.C updated
[u/mrichter/AliRoot.git] / MFT / AliMFTPlane.h
1 #ifndef AliMFTPlane_H
2 #define AliMFTPlane_H 
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //====================================================================================================================================================
8 //
9 //      Class for the description of the structure for the planes of the ALICE Muon Forward Tracker
10 //
11 //      Contact author: antonio.uras@cern.ch
12 //
13 //====================================================================================================================================================
14
15 #include "TNamed.h"
16 #include "THnSparse.h"
17 #include "TClonesArray.h"
18 #include "TAxis.h"
19 #include "TPave.h"
20 #include "TCanvas.h"
21 #include "TH2D.h"
22 #include "TEllipse.h"
23 #include "TMath.h"
24 #include "AliLog.h"
25
26 //====================================================================================================================================================
27
28 class AliMFTPlane : public TNamed {
29
30 public:
31
32   AliMFTPlane();
33   AliMFTPlane(const Char_t *name, const Char_t *title);
34   AliMFTPlane(const AliMFTPlane& pt);
35   AliMFTPlane& operator=(const AliMFTPlane &source);
36   
37   virtual ~AliMFTPlane();  // destructor
38   virtual void Clear(const Option_t* /*opt*/);
39   
40   Bool_t Init(Int_t    planeNumber,
41               Double_t zCenter, 
42               Double_t rMin, 
43               Double_t rMax, 
44               Double_t pixelSizeX, 
45               Double_t pixelSizeY, 
46               Double_t thicknessActive, 
47               Double_t thicknessSupport, 
48               Double_t thicknessReadout,
49               Bool_t   hasPixelRectangularPatternAlongY);
50   
51   Bool_t CreateStructure();
52
53   Int_t GetNActiveElements()  const { return fActiveElements->GetEntries();  }
54   Int_t GetNReadoutElements() const { return fReadoutElements->GetEntries(); }
55   Int_t GetNSupportElements() const { return fSupportElements->GetEntries(); }
56
57   TClonesArray* GetActiveElements()  { return fActiveElements;  }
58   TClonesArray* GetReadoutElements() { return fReadoutElements; }
59   TClonesArray* GetSupportElements() { return fSupportElements; }
60
61   THnSparseC* GetActiveElement(Int_t id);
62   THnSparseC* GetReadoutElement(Int_t id);
63   THnSparseC* GetSupportElement(Int_t id);
64
65   Bool_t IsFront(THnSparseC *element) const { return (element->GetAxis(2)->GetXmin() < fZCenter); }
66
67   void DrawPlane(Option_t *opt="");
68
69   Double_t GetRMinSupport() const { return fRMinSupport; }
70   Double_t GetRMaxSupport() const { return fRMaxSupport; }
71   Double_t GetThicknessSupport() { return GetSupportElement(0)->GetAxis(2)->GetXmax() - GetSupportElement(0)->GetAxis(2)->GetXmin(); }
72   
73   Double_t GetZCenter()            const { return fZCenter; }
74   Double_t GetZCenterActiveFront() const { return fZCenterActiveFront; }
75   Double_t GetZCenterActiveBack()  const { return fZCenterActiveBack; }
76
77   void SetEquivalentSilicon(Double_t equivalentSilicon)                       { fEquivalentSilicon            = equivalentSilicon; }
78   void SetEquivalentSiliconBeforeFront(Double_t equivalentSiliconBeforeFront) { fEquivalentSiliconBeforeFront = equivalentSiliconBeforeFront; }
79   void SetEquivalentSiliconBeforeBack(Double_t equivalentSiliconBeforeBack)   { fEquivalentSiliconBeforeBack  = equivalentSiliconBeforeBack; }
80   Double_t GetEquivalentSilicon()            const { return fEquivalentSilicon; }
81   Double_t GetEquivalentSiliconBeforeFront() const { return fEquivalentSiliconBeforeFront; }
82   Double_t GetEquivalentSiliconBeforeBack()  const { return fEquivalentSiliconBeforeBack; }
83
84   Int_t GetNumberOfChips(Option_t *opt);
85   Bool_t HasPixelRectangularPatternAlongY() { return fHasPixelRectangularPatternAlongY; }
86   
87 private:
88
89   // measures in cm
90
91   static const Double_t fRadiusMin;            // minimum radial distance of the MFT sensors. To be carefully coordinated with fActiveSuperposition
92
93   static const Double_t fActiveSuperposition;  // superposition between the active elements tasselling the MFT planes, for having a 
94                                                // full acceptance coverage even in case of 10 degrees inclined tracks
95   static const Double_t fHeightActive;         // height of the active elements
96   static const Double_t fHeightReadout;        // height of the readout elements attached to the active ones
97
98   static const Double_t fSupportExtMargin;     // minimum border size between the end of the support plane and the sensors: fHeightReadout + 0.3
99
100   Int_t fPlaneNumber;
101
102   Double_t fZCenter, fRMinSupport, fRMax, fRMaxSupport, fPixelSizeX, fPixelSizeY, fThicknessActive, fThicknessSupport, fThicknessReadout;
103   Double_t fZCenterActiveFront, fZCenterActiveBack, fEquivalentSilicon, fEquivalentSiliconBeforeFront, fEquivalentSiliconBeforeBack;
104
105   TClonesArray *fActiveElements, *fReadoutElements, *fSupportElements;
106
107   Bool_t fHasPixelRectangularPatternAlongY, fPlaneIsOdd;
108
109   ClassDef(AliMFTPlane, 1)
110
111 };
112
113 //====================================================================================================================================================
114         
115 #endif
116