]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDDetector.h
TPC ALTRO mapping class
[u/mrichter/AliRoot.git] / FMD / AliFMDDetector.h
1 #ifndef ALIFMDDETECTOR_H
2 #define ALIFMDDETECTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice                               
9  */
10 #ifndef ROOT_TNamed
11 # include <TNamed.h>
12 #endif
13 class AliFMDRing;
14
15
16 //__________________________________________________________________
17 /** Base class for the geometry description and parameters of the FMD
18     sub detectors FMD1, FMD2, and FMD3.
19
20     This class hold common parameters of the specific FMD detectors.
21 */
22 class AliFMDDetector : public TNamed 
23 {
24 public:
25   AliFMDDetector(Int_t id, AliFMDRing* inner, AliFMDRing* outer);
26   AliFMDDetector(const AliFMDDetector& other);
27   AliFMDDetector& operator=(const AliFMDDetector& other);
28   virtual ~AliFMDDetector() {}
29   /** Initialize the geometry */
30   virtual void Init();
31     
32   /** @param x Detector number */
33   void SetId(Int_t x) { fId = x; }
34   /** @param x Position of outer ring along z */
35   void SetInnerZ(Double_t x) { fInnerZ = x; }
36   /** @param x Position of outer ring along z */
37   void SetOuterZ(Double_t x) { fOuterZ = x; }
38   /** @param x Thickness of honeycomb plate */
39   void SetHoneycombThickness(Double_t x=1) { fHoneycombThickness = x; }
40   /** @param x Thickness of aluminium of honeycomb */
41   void SetAlThickness(Double_t x=.1) { fAlThickness = x; }
42   /** @param x Inner radius of inner honeycomb */
43   void SetInnerHoneyLowR(Double_t x) { fInnerHoneyLowR = x; }
44   /** @param x Outer radius of inner honeycomb */
45   void SetInnerHoneyHighR(Double_t x) { fInnerHoneyHighR = x; }
46   /** @param x Inner radius of outer honeycomb */
47   void SetOuterHoneyLowR(Double_t x) { fOuterHoneyLowR = x; }
48   /** @param x Outer radius of outer honeycomb */
49   void SetOuterHoneyHighR(Double_t x) { fOuterHoneyHighR = x; }
50     
51   /** @return Detector number */
52   Int_t GetId() const { return fId; }
53   /** @return Position of outer ring along z */
54   Double_t GetInnerZ() const { return fInnerZ; }
55   /** @return Position of outer ring along z */
56   Double_t GetOuterZ() const { return fOuterZ; }
57   /** @return Thickness of honeycomb plate */
58   Double_t GetHoneycombThickness() const { return fHoneycombThickness; }
59   /** @return Thickness of aluminium of honeycomb */
60   Double_t GetAlThickness() const { return fAlThickness; }
61   /** @return Inner radius of inner honeycomb */
62   Double_t GetInnerHoneyLowR() const { return fInnerHoneyLowR; }
63   /** @return Outer radius of inner honeycomb */
64   Double_t GetInnerHoneyHighR() const { return fInnerHoneyHighR; }
65   /** @return Inner radius of outer honeycomb */
66   Double_t GetOuterHoneyLowR() const { return fOuterHoneyLowR; }
67   /** @return Outer radius of outer honeycomb */
68   Double_t GetOuterHoneyHighR() const { return fOuterHoneyHighR; }
69     
70   /** @return Inner ring information */
71   AliFMDRing* GetInner() const { return fInner; }
72   /** @return Outer ring information */
73   AliFMDRing* GetOuter() const { return fOuter; }
74   /** @param id Id of ring to get 
75       @return Pointer to ring, 0 on failure */
76   AliFMDRing* GetRing(Char_t id) const;
77   /** @param id Id of ring to get 
78       @return Z position of ring or 0 on failure */
79   Double_t GetRingZ(Char_t id) const;
80   
81   void Detector2XYZ(Char_t ring, UShort_t sector, UShort_t strip, 
82                     Double_t& x, Double_t& y, Double_t& z) const;
83   Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z, 
84                       Char_t& ring, UShort_t& sector, UShort_t& strip) const;
85 protected:
86   Int_t         fId;                    // Detector number
87   Double_t      fInnerZ;                // Position of outer ring along z
88   Double_t      fOuterZ;                // Position of outer ring along z
89   Double_t      fHoneycombThickness;    // Thickness of honeycomb plate
90   Double_t      fAlThickness;           // Thickness of aluminium of honeycomb
91   Double_t      fInnerHoneyLowR;        // Inner radius of inner honeycomb
92   Double_t      fInnerHoneyHighR;       // Outer radius of inner honeycomb
93   Double_t      fOuterHoneyLowR;        // Inner radius of outer honeycomb
94   Double_t      fOuterHoneyHighR;       // Outer radius of outer honeycomb
95   AliFMDRing*   fInner;                 // Pointer to inner ring information
96   AliFMDRing*   fOuter;                 // Pointer to outer ring information
97   
98   ClassDef(AliFMDDetector, 1); // 
99 };
100
101 #endif
102 //____________________________________________________________________
103 //
104 // Local Variables:
105 //   mode: C++
106 // End:
107 //
108 // EOF
109 //