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