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