]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MFT/AliMFTPlane.h
new version scalar product which includes different weights which then behaves as...
[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()  { return fActiveElements->GetEntries();  }
52   Int_t GetNReadoutElements() { return fReadoutElements->GetEntries(); }
53   Int_t GetNSupportElements() { 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) { return (element->GetAxis(2)->GetXmin() < fZCenter); }
64
65   void DrawPlane(Char_t *opt="");
66
67   Double_t GetRMinSupport() { return fRMinSupport; }
68   Double_t GetRMaxSupport() { return fRMaxSupport; }
69   Double_t GetThicknessSupport() { return GetSupportElement(0)->GetAxis(2)->GetXmax() - GetSupportElement(0)->GetAxis(2)->GetXmin(); }
70   
71   Double_t GetZCenter() { return fZCenter; }
72   Double_t GetZCenterActiveFront() { return fZCenterActiveFront; }
73   Double_t GetZCenterActiveBack()  { 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()            { return fEquivalentSilicon; }
79   Double_t GetEquivalentSiliconBeforeFront() { return fEquivalentSiliconBeforeFront; }
80   Double_t GetEquivalentSiliconBeforeBack()  { return fEquivalentSiliconBeforeBack; }
81   
82 private:
83
84   // measures in cm
85
86   static const Double_t fRadiusMin = 2.225;           // minimum radial distance of the MFT sensors. To be carefully coordinated with fActiveSuperposition
87
88   static const Double_t fActiveSuperposition = 0.05;  // superposition between the active elements tasselling the MFT planes, for having a 
89                                                       // full acceptance coverage even in case of 10 degrees inclined tracks
90   static const Double_t fHeightActive = 0.5;          // height of the active elements
91   static const Double_t fHeightReadout = 0.3;         // height of the readout elements attached to the active ones
92
93   static const Double_t fSupportExtMargin = 0.3 + 0.3;    // minimum border size between the end of the support plane and the sensors: fHeightReadout + 0.3
94
95   Int_t fPlaneNumber;
96
97   Double_t fZCenter, fRMinSupport, fRMax, fRMaxSupport, fPixelSizeX, fPixelSizeY, fThicknessActive, fThicknessSupport, fThicknessReadout;
98   Double_t fZCenterActiveFront, fZCenterActiveBack, fEquivalentSilicon, fEquivalentSiliconBeforeFront, fEquivalentSiliconBeforeBack;
99
100   TClonesArray *fActiveElements, *fReadoutElements, *fSupportElements;
101
102   ClassDef(AliMFTPlane, 1)
103
104 };
105
106 //====================================================================================================================================================
107         
108 #endif
109