Line data Source code
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 :
29 : class AliMFTPlane : public TNamed {
30 :
31 : public:
32 :
33 : AliMFTPlane();
34 : AliMFTPlane(const Char_t *name, const Char_t *title);
35 : AliMFTPlane(const AliMFTPlane& pt);
36 : AliMFTPlane& operator=(const AliMFTPlane &source);
37 :
38 : virtual ~AliMFTPlane(); // destructor
39 : virtual void Clear(const Option_t* /*opt*/);
40 :
41 : Bool_t Init(Int_t planeNumber,
42 : Double_t zCenter,
43 : Double_t rMin,
44 : Double_t rMax,
45 : Double_t pixelSizeX,
46 : Double_t pixelSizeY,
47 : Double_t thicknessActive,
48 : Double_t thicknessSupport,
49 : Double_t thicknessReadout,
50 : Bool_t hasPixelRectangularPatternAlongY);
51 :
52 : Bool_t CreateStructure();
53 :
54 0 : Int_t GetNActiveElements() const { return fActiveElements->GetEntries(); }
55 0 : Int_t GetNReadoutElements() const { return fReadoutElements->GetEntries(); }
56 0 : Int_t GetNSupportElements() const { return fSupportElements->GetEntries(); }
57 :
58 0 : TClonesArray* GetActiveElements() { return fActiveElements; }
59 0 : TClonesArray* GetReadoutElements() { return fReadoutElements; }
60 0 : TClonesArray* GetSupportElements() { return fSupportElements; }
61 :
62 : THnSparseC* GetActiveElement(Int_t id);
63 : THnSparseC* GetReadoutElement(Int_t id);
64 : THnSparseC* GetSupportElement(Int_t id);
65 :
66 0 : Bool_t IsFront(THnSparseC *element) const { return (element->GetAxis(2)->GetXmin() < fZCenter); }
67 :
68 : void DrawPlane(Option_t *opt="");
69 :
70 0 : Double_t GetRMinSupport() const { return fRMinSupport; }
71 0 : Double_t GetRMaxSupport() const { return fRMaxSupport; }
72 0 : Double_t GetThicknessSupport() { return GetSupportElement(0)->GetAxis(2)->GetXmax() - GetSupportElement(0)->GetAxis(2)->GetXmin(); }
73 :
74 0 : Double_t GetZCenter() const { return fZCenter; }
75 0 : Double_t GetZCenterActiveFront() const { return fZCenterActiveFront; }
76 0 : Double_t GetZCenterActiveBack() const { return fZCenterActiveBack; }
77 :
78 0 : void SetEquivalentSilicon(Double_t equivalentSilicon) { fEquivalentSilicon = equivalentSilicon; }
79 0 : void SetEquivalentSiliconBeforeFront(Double_t equivalentSiliconBeforeFront) { fEquivalentSiliconBeforeFront = equivalentSiliconBeforeFront; }
80 0 : void SetEquivalentSiliconBeforeBack(Double_t equivalentSiliconBeforeBack) { fEquivalentSiliconBeforeBack = equivalentSiliconBeforeBack; }
81 0 : Double_t GetEquivalentSilicon() const { return fEquivalentSilicon; }
82 0 : Double_t GetEquivalentSiliconBeforeFront() const { return fEquivalentSiliconBeforeFront; }
83 0 : Double_t GetEquivalentSiliconBeforeBack() const { return fEquivalentSiliconBeforeBack; }
84 :
85 : Int_t GetNumberOfChips(Option_t *opt);
86 0 : Bool_t HasPixelRectangularPatternAlongY() { return fHasPixelRectangularPatternAlongY; }
87 :
88 : private:
89 :
90 : // measures in cm
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, fPlaneIsOdd;
107 :
108 14 : ClassDef(AliMFTPlane, 1)
109 :
110 : };
111 :
112 : //====================================================================================================================================================
113 :
114 : #endif
115 :
|