ROOT logo
//
// $Id$
//
#ifndef ALIFMD3_H
#define ALIFMD3_H
/** @file    AliFMD3.h
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Sun Mar 26 18:23:48 2006
    @brief   Geometry parameters of the FMD3 detector. 
*/
// Geometry parameters of the FMD3 detector. FMD3 has a fairly
// complicated support structure.  The cone also supports the
// beam-pipe. 
// 
#ifndef ALIFMDDETECTOR_H
# include "AliFMDDetector.h"
#endif
#include <TObjArray.h>

/** @class AliFMD3 AliFMD3.h <FMD/AliFMD3.h> 
    @brief Geometry parameters of the FMD3 detector. 
    FMD3 has a fairly complicated support structure.  The cone also
    supports the beam-pipe.
    @image html FMD3.png 
    @ingroup FMD_base
*/
class AliFMD3 : public AliFMDDetector 
{
public: 
  /** Constructor 
      @param inner Pointer to inner ring description 
      @param outer Pointer to outer ring description */
  AliFMD3(AliFMDRing* inner, AliFMDRing* outer);
  /** Destructor */
  virtual ~AliFMD3(){}

  /** Initialize the geometry */
  virtual void Init();
  /** Get the Z offset (to inner ring) */
  Double_t GetNoseZ() const { return fNoseZ; }

  /** @return Z position of front of nose */
  Double_t GetFlangeDepth() const { return fFlangeDepth; }
  /** @return Nose inner radius */
  Double_t GetFlangeLength() const { return fFlangeLength; }
  /** @return Nose outer radius */
  Double_t GetFlangeWidth() const { return fFlangeWidth; }

  /** @return Length of nose in Z */
  Double_t GetFiducialRadius() const { return fFiducialRadius; }

  /** @return The angle of the cone on out-side */
  Double_t GetConeOuterAngle() const { return fConeOuterAngle; }
  /** @return The angle of the cone on out-side */
  Double_t GetConeInnerAngle() const { return fConeInnerAngle; }

  /** @return Hole off-set from nose */
  Double_t GetHoleOffset() const { return fHoleOffset; }
  /** @return Depth of holes  */
  Double_t GetHoleDepth() const { return fHoleDepth; }
  /** @return Length of holes  */
  Double_t GetHoleLength() const { return fHoleLength; }
  /** @return Lowest with of holes */
  Double_t GetHoleLowWidth() const { return fHoleLowWidth; }
  /** @return Highest width of holes */
  Double_t GetHoleHighWidth() const { return fHoleHighWidth; }

  /** @return Length of a bolt  */
  Double_t GetBoltLength() const { return fBoltLength; }
  /** @return Bolt radius  */
  Double_t GetBoltRadius() const { return fBoltRadius; }

  
  /** @return array of 3-vectors (z, r_low, r_high) of the cone
      radii. */
  const TObjArray& ConeRadii() const { return fConeRadii; }
  /** @return array of 2-vectors (x,y) of the fiducial holes in the
              flanges.  coordinates are in the global coordinate
              system. */
  const TObjArray& FiducialHoles() const { return fFiducialHoles; }
    
  /** Get the cone radii at @a z. 
      @param z Point to evaulate at 
      @param opt If @c "O" get the outer radii, if @c "I" get the
      inner radii. 
      @return the radius of the cone */
  Double_t ConeR(Double_t z, Option_t* opt="O") const;

protected: 
  Double_t	fNoseZ;			// Z position of front of nose
  Double_t      fFlangeDepth;           // Depth of flanges 
  Double_t      fFlangeHighR;           // Outer radius of flanges. 
  Double_t      fFlangeLength;          // Length of flanges 
  Double_t      fFlangeWidth;           // Width of flanges 

  Double_t      fFiducialRadius;        // Radius of fiducial holes.

  Double_t      fConeInnerAngle;        // Angle of cone on inside  
  Double_t      fConeOuterAngle;        // Angle of cone on outside  

  Double_t      fHoleOffset;            // Offset (from nose-tip) of
					// holes 
  Double_t      fHoleDepth;             // Depth of holes 
  Double_t      fHoleLength;            // Length of holes 
  Double_t      fHoleLowWidth;          // Lowest with of holes
  Double_t      fHoleHighWidth;         // Highest width of holes
  
  Double_t      fBoltLength;            // Length of a bolt 
  Double_t      fBoltRadius;            // Bolt radius 

  TObjArray     fConeRadii;             // Array of cone radii.
  TObjArray     fFiducialHoles;         // Array of fiducial hole (x,y)
  
  ClassDef(AliFMD3, 2);
};

#endif
//____________________________________________________________________
//
// Local Variables:
//   mode: C++
// End:
//
//
// EOF
//
 AliFMD3.h:1
 AliFMD3.h:2
 AliFMD3.h:3
 AliFMD3.h:4
 AliFMD3.h:5
 AliFMD3.h:6
 AliFMD3.h:7
 AliFMD3.h:8
 AliFMD3.h:9
 AliFMD3.h:10
 AliFMD3.h:11
 AliFMD3.h:12
 AliFMD3.h:13
 AliFMD3.h:14
 AliFMD3.h:15
 AliFMD3.h:16
 AliFMD3.h:17
 AliFMD3.h:18
 AliFMD3.h:19
 AliFMD3.h:20
 AliFMD3.h:21
 AliFMD3.h:22
 AliFMD3.h:23
 AliFMD3.h:24
 AliFMD3.h:25
 AliFMD3.h:26
 AliFMD3.h:27
 AliFMD3.h:28
 AliFMD3.h:29
 AliFMD3.h:30
 AliFMD3.h:31
 AliFMD3.h:32
 AliFMD3.h:33
 AliFMD3.h:34
 AliFMD3.h:35
 AliFMD3.h:36
 AliFMD3.h:37
 AliFMD3.h:38
 AliFMD3.h:39
 AliFMD3.h:40
 AliFMD3.h:41
 AliFMD3.h:42
 AliFMD3.h:43
 AliFMD3.h:44
 AliFMD3.h:45
 AliFMD3.h:46
 AliFMD3.h:47
 AliFMD3.h:48
 AliFMD3.h:49
 AliFMD3.h:50
 AliFMD3.h:51
 AliFMD3.h:52
 AliFMD3.h:53
 AliFMD3.h:54
 AliFMD3.h:55
 AliFMD3.h:56
 AliFMD3.h:57
 AliFMD3.h:58
 AliFMD3.h:59
 AliFMD3.h:60
 AliFMD3.h:61
 AliFMD3.h:62
 AliFMD3.h:63
 AliFMD3.h:64
 AliFMD3.h:65
 AliFMD3.h:66
 AliFMD3.h:67
 AliFMD3.h:68
 AliFMD3.h:69
 AliFMD3.h:70
 AliFMD3.h:71
 AliFMD3.h:72
 AliFMD3.h:73
 AliFMD3.h:74
 AliFMD3.h:75
 AliFMD3.h:76
 AliFMD3.h:77
 AliFMD3.h:78
 AliFMD3.h:79
 AliFMD3.h:80
 AliFMD3.h:81
 AliFMD3.h:82
 AliFMD3.h:83
 AliFMD3.h:84
 AliFMD3.h:85
 AliFMD3.h:86
 AliFMD3.h:87
 AliFMD3.h:88
 AliFMD3.h:89
 AliFMD3.h:90
 AliFMD3.h:91
 AliFMD3.h:92
 AliFMD3.h:93
 AliFMD3.h:94
 AliFMD3.h:95
 AliFMD3.h:96
 AliFMD3.h:97
 AliFMD3.h:98
 AliFMD3.h:99
 AliFMD3.h:100
 AliFMD3.h:101
 AliFMD3.h:102
 AliFMD3.h:103
 AliFMD3.h:104
 AliFMD3.h:105
 AliFMD3.h:106
 AliFMD3.h:107
 AliFMD3.h:108
 AliFMD3.h:109
 AliFMD3.h:110
 AliFMD3.h:111
 AliFMD3.h:112
 AliFMD3.h:113
 AliFMD3.h:114
 AliFMD3.h:115
 AliFMD3.h:116
 AliFMD3.h:117
 AliFMD3.h:118
 AliFMD3.h:119
 AliFMD3.h:120
 AliFMD3.h:121
 AliFMD3.h:122
 AliFMD3.h:123
 AliFMD3.h:124
 AliFMD3.h:125
 AliFMD3.h:126