ee3da7e327807c8c8950af05e59d33a64d80cc12
[u/mrichter/AliRoot.git] / FMD / AliFMD3.h
1 //
2 // $Id$
3 //
4 #ifndef ALIFMD3_H
5 #define ALIFMD3_H
6
7 #ifndef ALIFMDDETECTOR_H
8 # include "AliFMDDetector.h"
9 #endif
10
11 /** @class AliFMD3 AliFMD3.h <FMD/AliFMD3.h> 
12     Geometry parameters of the FMD3 detector. FMD3 has a fairly
13     complicated support structure.  The cone also supports the
14     beam-pipe. 
15     @ingroup FMD_base
16 */
17 class AliFMD3 : public AliFMDDetector 
18 {
19 public: 
20   /** Constructor 
21       @param inner Pointer to inner ring description 
22       @param outer Pointer to outer ring description */
23   AliFMD3(AliFMDRing* inner, AliFMDRing* outer);
24   /** Destructor */
25   virtual ~AliFMD3(){}
26
27   /** Initialize the geometry */
28   virtual void Init();
29
30   /** @param z Z position of front of nose */
31   void SetNoseZ(Double_t z=-46) { fNoseZ = z; }
32   /** @param r Nose inner radius */
33   void SetNoseLowR(Double_t r=5.5) { fNoseLowR = r; }
34   /** @param r Nose outer radius */
35   void SetNoseHighR(Double_t r=6.7) { fNoseHighR = r; }
36   /** @param l Length of nose in Z */
37   void SetNoseLength(Double_t l=2.8) { fNoseLength = l; }
38   /** @param r Inner radius of base of cone */
39   void SetBackLowR(Double_t r=61./2) { fBackLowR = r; }
40   /** @param r Outer radius of base of cone */
41   void SetBackHighR(Double_t r=66.8/2) { fBackHighR = r; }
42   /** @param l Length of base of cone in Z */
43   void SetBackLength(Double_t l=1.4) { fBackLength = l; }
44   /** @param t Thickness of support beams */
45   void SetBeamThickness(Double_t t=.5) { fBeamThickness = t; }
46   /** @param w Width of support beams */
47   void SetBeamWidth(Double_t w=6) { fBeamWidth = w; }
48   /** @param l Length of the cone in Z */
49   void SetConeLength(Double_t l=30.9) { fConeLength = l; }
50   /** @param r Outer radius of flanges */
51   void SetFlangeR(Double_t r=49.25) { fFlangeR = r; }
52   /** @param n Number of support beams */
53   void SetNBeam(Int_t n=8) { fNBeam = n; }
54   /** @param n Number of support flanges */
55   void SetNFlange(Int_t n=4) { fNFlange = n; }
56
57   /** @return Z position of front of nose */
58   Double_t GetNoseZ() const { return fNoseZ; }
59   /** @return Nose inner radius */
60   Double_t GetNoseLowR() const { return fNoseLowR; }
61   /** @return Nose outer radius */
62   Double_t GetNoseHighR() const { return fNoseHighR; }
63   /** @return Length of nose in Z */
64   Double_t GetNoseLength() const { return fNoseLength; }
65   /** @return Inner radius of base of cone */
66   Double_t GetBackLowR() const { return fBackLowR; }
67   /** @return Outer radius of base of cone */
68   Double_t GetBackHighR() const { return fBackHighR; }
69   /** @return Length of base of cone in Z */
70   Double_t GetBackLength() const { return fBackLength; }
71   /** @return Thickness of support beams */
72   Double_t GetBeamThickness() const { return fBeamThickness; }
73   /** @return Width of support beams */
74   Double_t GetBeamWidth() const { return fBeamWidth; }
75   /** @return Length of the cone in Z */
76   Double_t GetConeLength() const { return fConeLength; }
77   /** @return Outer radius of flanges */
78   Double_t GetFlangeR() const { return fFlangeR; }
79   /** @return Midpoint of mother volume */
80   Double_t GetZ() const { return fZ; }
81   /** @return Slope of cone */
82   Double_t GetAlpha() const { return fAlpha; }
83   /** @return Number of support beams */
84   Int_t GetNBeam() const { return fNBeam; }
85   /** @return Number of support flanges */
86   Int_t GetNFlange() const { return fNFlange; }
87
88   /** Get the cone radii at @a z. 
89       @param z Point to evaulate at 
90       @param opt If @c "O" get the outer radii, if @c "I" get the
91       inner radii. 
92       @return the radius of the cone */
93   Double_t ConeR(Double_t z, Option_t* opt="O") const;
94
95 protected: 
96   Double_t      fNoseZ;                 // Z position of front of nose
97   Double_t      fNoseLowR;              // Nose inner radius
98   Double_t      fNoseHighR;             // Nose outer radius
99   Double_t      fNoseLength;            // Length of nose in Z
100   Double_t      fBackLowR;              // Inner radius of base of cone
101   Double_t      fBackHighR;             // Outer radius of base of cone
102   Double_t      fBackLength;            // Length of base of cone in Z
103   Double_t      fBeamThickness;         // Thickness of support beams
104   Double_t      fBeamWidth;             // Width of support beams
105   Double_t      fConeLength;            // Length of the cone in Z
106   Double_t      fFlangeR;               // Outer radius of flanges
107   Double_t      fZ;                     // Midpoint of mother volume
108   Double_t      fAlpha;                 // Slope of cone
109   Int_t         fNBeam;                 // Number of support beams
110   Int_t         fNFlange;               // Number of support flangesy
111   ClassDef(AliFMD3, 1);
112 };
113
114 #endif
115 //____________________________________________________________________
116 //
117 // Local Variables:
118 //   mode: C++
119 // End:
120 //
121 //
122 // EOF
123 //