274f945286cc881485a266875a9d2b71e73fcd97
[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
39   Bool_t Init(Int_t    planeNumber,
40               Double_t zCenter, 
41               Double_t rMin, 
42               Double_t rMax, 
43               Double_t pixelSizeX, 
44               Double_t pixelSizeY, 
45               Double_t thicknessActive, 
46               Double_t thicknessSupport, 
47               Double_t thicknessReadout);
48   
49   Bool_t CreateStructure();
50
51   Int_t GetNActiveElements()  const { return fActiveElements->GetEntries();  }
52   Int_t GetNReadoutElements() const { return fReadoutElements->GetEntries(); }
53   Int_t GetNSupportElements() const { return fSupportElements->GetEntries(); }
54
55   TClonesArray* GetActiveElements()  { return fActiveElements;  }
56   TClonesArray* GetReadoutElements() { return fReadoutElements; }
57   TClonesArray* GetSupportElements() { return fSupportElements; }
58
59   THnSparseC* GetActiveElement(Int_t id);
60   THnSparseC* GetReadoutElement(Int_t id);
61   THnSparseC* GetSupportElement(Int_t id);
62
63   Bool_t IsFront(THnSparseC *element) const { return (element->GetAxis(2)->GetXmin() < fZCenter); }
64
65   void DrawPlane(Option_t *opt="");
66
67   Double_t GetRMinSupport() const { return fRMinSupport; }
68   Double_t GetRMaxSupport() const { return fRMaxSupport; }
69   Double_t GetThicknessSupport() { return GetSupportElement(0)->GetAxis(2)->GetXmax() - GetSupportElement(0)->GetAxis(2)->GetXmin(); }
70   
71   Double_t GetZCenter()            const { return fZCenter; }
72   Double_t GetZCenterActiveFront() const { return fZCenterActiveFront; }
73   Double_t GetZCenterActiveBack()  const { return fZCenterActiveBack; }
74
75   void SetEquivalentSilicon(Double_t equivalentSilicon)                       { fEquivalentSilicon            = equivalentSilicon; }
76   void SetEquivalentSiliconBeforeFront(Double_t equivalentSiliconBeforeFront) { fEquivalentSiliconBeforeFront = equivalentSiliconBeforeFront; }
77   void SetEquivalentSiliconBeforeBack(Double_t equivalentSiliconBeforeBack)   { fEquivalentSiliconBeforeBack  = equivalentSiliconBeforeBack; }
78   Double_t GetEquivalentSilicon()            const { return fEquivalentSilicon; }
79   Double_t GetEquivalentSiliconBeforeFront() const { return fEquivalentSiliconBeforeFront; }
80   Double_t GetEquivalentSiliconBeforeBack()  const { return fEquivalentSiliconBeforeBack; }
81
82   Int_t GetNumberOfChips(Option_t *opt);
83   
84 private:
85
86   // measures in cm
87
88   static const Double_t fRadiusMin;            // minimum radial distance of the MFT sensors. To be carefully coordinated with fActiveSuperposition
89
90   static const Double_t fActiveSuperposition;  // superposition between the active elements tasselling the MFT planes, for having a 
91                                                // full acceptance coverage even in case of 10 degrees inclined tracks
92   static const Double_t fHeightActive;         // height of the active elements
93   static const Double_t fHeightReadout;        // height of the readout elements attached to the active ones
94
95   static const Double_t fSupportExtMargin;     // minimum border size between the end of the support plane and the sensors: fHeightReadout + 0.3
96
97   Int_t fPlaneNumber;
98
99   Double_t fZCenter, fRMinSupport, fRMax, fRMaxSupport, fPixelSizeX, fPixelSizeY, fThicknessActive, fThicknessSupport, fThicknessReadout;
100   Double_t fZCenterActiveFront, fZCenterActiveBack, fEquivalentSilicon, fEquivalentSiliconBeforeFront, fEquivalentSiliconBeforeBack;
101
102   TClonesArray *fActiveElements, *fReadoutElements, *fSupportElements;
103
104   ClassDef(AliMFTPlane, 1)
105
106 };
107
108 //====================================================================================================================================================
109         
110 #endif
111