]>
Commit | Line | Data |
---|---|---|
820b4d9e | 1 | #ifndef AliMFTSegmentation_H |
2 | #define AliMFTSegmentation_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 | // Segmentation class for the planes of the ALICE Muon Forward Tracker | |
10 | // | |
11 | // Contact author: antonio.uras@cern.ch | |
12 | // | |
13 | //==================================================================================================================================================== | |
14 | ||
15 | #include "TFile.h" | |
16 | #include "TNtuple.h" | |
17 | #include "TClonesArray.h" | |
18 | #include "TMath.h" | |
19 | #include "AliMFTPlane.h" | |
20 | #include "TMath.h" | |
21 | ||
22 | //==================================================================================================================================================== | |
23 | ||
24 | class AliMFTSegmentation : public TObject { | |
25 | ||
26 | public: | |
27 | ||
28 | AliMFTSegmentation(); | |
29 | AliMFTSegmentation(const Char_t *nameGeomFile); | |
30 | ||
31 | virtual ~AliMFTSegmentation() {} | |
32 | ||
33 | THnSparseC* GetDetElem(Int_t detElemID); | |
34 | ||
35 | Int_t GetDetElemID(Int_t plane, Int_t detElem) { return fNMaxDetElemPerPlane*plane + detElem; } | |
36 | ||
37 | Bool_t Hit2PixelID(Double_t xHit, Double_t yHit, Int_t detElemID, Int_t &xPixel, Int_t &yPixel); | |
38 | ||
39 | Double_t GetPixelSizeX(Int_t detElemID) { THnSparseC *detElem = GetDetElem(detElemID); return detElem->GetAxis(0)->GetBinWidth(1); } | |
40 | Double_t GetPixelSizeY(Int_t detElemID) { THnSparseC *detElem = GetDetElem(detElemID); return detElem->GetAxis(1)->GetBinWidth(1); } | |
41 | Double_t GetPixelSizeZ(Int_t detElemID) { THnSparseC *detElem = GetDetElem(detElemID); return detElem->GetAxis(2)->GetBinWidth(1); } | |
42 | ||
43 | Double_t GetPixelCenterX(Int_t detElemID, Int_t iPixel) { THnSparseC *detElem = GetDetElem(detElemID); return detElem->GetAxis(0)->GetBinCenter(iPixel+1); } | |
44 | Double_t GetPixelCenterY(Int_t detElemID, Int_t iPixel) { THnSparseC *detElem = GetDetElem(detElemID); return detElem->GetAxis(1)->GetBinCenter(iPixel+1); } | |
45 | Double_t GetPixelCenterZ(Int_t detElemID, Int_t iPixel) { THnSparseC *detElem = GetDetElem(detElemID); return -1.*(detElem->GetAxis(2)->GetBinCenter(iPixel+1)); } | |
46 | ||
47 | Int_t GetNPlanes() { return fMFTPlanes->GetEntries(); } | |
48 | ||
49 | AliMFTPlane* GetPlane(Int_t iPlane) { if (iPlane>=0 && iPlane<fMFTPlanes->GetEntries()) return (AliMFTPlane*) fMFTPlanes->At(iPlane); else return NULL; } | |
50 | ||
51 | protected: | |
52 | ||
53 | static const Int_t fNMaxPlanes = 20; // max number of MFT planes | |
54 | static const Double_t fRadiusMin = 2.225; // minimum radial distance of the MFT sensors. To be carefully coordinated with fDetElemSuperposition | |
55 | static const Double_t fDetElemSuperposition = 0.05; // superposition between bands tasselling the MFT planes, for having a full acceptance coverage | |
56 | // even in case of 10 degrees inclined tracks | |
57 | static const Double_t fHeightDetElem = 0.5; // height of the active volume bands composing the planes | |
58 | static const Double_t fSupportExtMargin = 0.3; // minimum border size between the end of the support plane and the sensors | |
59 | ||
60 | static const Int_t fNMaxDetElemPerPlane = 1000; | |
61 | ||
62 | TClonesArray *fMFTPlanes; | |
63 | ||
64 | private: | |
65 | ||
66 | AliMFTSegmentation(const AliMFTSegmentation &source); | |
67 | AliMFTSegmentation& operator=(const AliMFTSegmentation &source); | |
68 | ||
69 | ClassDef(AliMFTSegmentation,1) | |
70 | ||
71 | }; | |
72 | ||
73 | //==================================================================================================================================================== | |
74 | ||
75 | #endif | |
76 |