]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MFT/AliMFTSegmentation.h
monitor dQdl (PID) at TRD entrance
[u/mrichter/AliRoot.git] / MFT / AliMFTSegmentation.h
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