Woops. TObject::MakeZombie is irrevertable. Made
[u/mrichter/AliRoot.git] / FMD / AliFMD3.h
1 //
2 // $Id$
3 //
4 #ifndef ALIFMD3_H
5 #define ALIFMD3_H
6 /** @file    AliFMD3.h
7     @author  Christian Holm Christensen <cholm@nbi.dk>
8     @date    Sun Mar 26 18:23:48 2006
9     @brief   Geometry parameters of the FMD3 detector. 
10 */
11 // Geometry parameters of the FMD3 detector. FMD3 has a fairly
12 // complicated support structure.  The cone also supports the
13 // beam-pipe. 
14 // 
15 #ifndef ALIFMDDETECTOR_H
16 # include "AliFMDDetector.h"
17 #endif
18 #include <TObjArray.h>
19
20 /** @class AliFMD3 AliFMD3.h <FMD/AliFMD3.h> 
21     @brief Geometry parameters of the FMD3 detector. 
22     FMD3 has a fairly complicated support structure.  The cone also
23     supports the beam-pipe.
24     @image html FMD3.png 
25     @ingroup FMD_base
26 */
27 class AliFMD3 : public AliFMDDetector 
28 {
29 public: 
30   /** Constructor 
31       @param inner Pointer to inner ring description 
32       @param outer Pointer to outer ring description */
33   AliFMD3(AliFMDRing* inner, AliFMDRing* outer);
34   /** Destructor */
35   virtual ~AliFMD3(){}
36
37   /** Initialize the geometry */
38   virtual void Init();
39   /** Get the Z offset (to inner ring) */
40   Double_t GetNoseZ() const { return fNoseZ; }
41
42   /** @return Z position of front of nose */
43   Double_t GetFlangeDepth() const { return fFlangeDepth; }
44   /** @return Nose inner radius */
45   Double_t GetFlangeLength() const { return fFlangeLength; }
46   /** @return Nose outer radius */
47   Double_t GetFlangeWidth() const { return fFlangeWidth; }
48
49   /** @return Length of nose in Z */
50   Double_t GetFiducialRadius() const { return fFiducialRadius; }
51
52   /** @return The angle of the cone on out-side */
53   Double_t GetConeOuterAngle() const { return fConeOuterAngle; }
54   /** @return The angle of the cone on out-side */
55   Double_t GetConeInnerAngle() const { return fConeInnerAngle; }
56
57   /** @return Hole off-set from nose */
58   Double_t GetHoleOffset() const { return fHoleOffset; }
59   /** @return Depth of holes  */
60   Double_t GetHoleDepth() const { return fHoleDepth; }
61   /** @return Length of holes  */
62   Double_t GetHoleLength() const { return fHoleLength; }
63   /** @return Lowest with of holes */
64   Double_t GetHoleLowWidth() const { return fHoleLowWidth; }
65   /** @return Highest width of holes */
66   Double_t GetHoleHighWidth() const { return fHoleHighWidth; }
67
68   /** @return Length of a bolt  */
69   Double_t GetBoltLength() const { return fBoltLength; }
70   /** @return Bolt radius  */
71   Double_t GetBoltRadius() const { return fBoltRadius; }
72
73   
74   /** @return array of 3-vectors (z, r_low, r_high) of the cone
75       radii. */
76   const TObjArray& ConeRadii() const { return fConeRadii; }
77   /** @return array of 2-vectors (x,y) of the fiducial holes in the
78               flanges.  coordinates are in the global coordinate
79               system. */
80   const TObjArray& FiducialHoles() const { return fFiducialHoles; }
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      fFlangeDepth;           // Depth of flanges 
92   Double_t      fFlangeHighR;           // Outer radius of flanges. 
93   Double_t      fFlangeLength;          // Length of flanges 
94   Double_t      fFlangeWidth;           // Width of flanges 
95
96   Double_t      fFiducialRadius;        // Radius of fiducial holes.
97
98   Double_t      fConeInnerAngle;        // Angle of cone on inside  
99   Double_t      fConeOuterAngle;        // Angle of cone on outside  
100
101   Double_t      fHoleOffset;            // Offset (from nose-tip) of
102                                         // holes 
103   Double_t      fHoleDepth;             // Depth of holes 
104   Double_t      fHoleLength;            // Length of holes 
105   Double_t      fHoleLowWidth;          // Lowest with of holes
106   Double_t      fHoleHighWidth;         // Highest width of holes
107   
108   Double_t      fBoltLength;            // Length of a bolt 
109   Double_t      fBoltRadius;            // Bolt radius 
110
111   TObjArray     fConeRadii;             // Array of cone radii.
112   TObjArray     fFiducialHoles;         // Array of fiducial hole (x,y)
113   
114   ClassDef(AliFMD3, 2);
115 };
116
117 #endif
118 //____________________________________________________________________
119 //
120 // Local Variables:
121 //   mode: C++
122 // End:
123 //
124 //
125 // EOF
126 //