Adding the new detector MFT (Antonio Uras)
[u/mrichter/AliRoot.git] / MFT / AliMFTPlane.h
CommitLineData
820b4d9e 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
28class AliMFTPlane : public TNamed {
29
30public:
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
82private:
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