X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=FMD%2FAliFMD3.h;h=78e9e91c81472e1568364d784c661d73738d088f;hp=2d3f3184dbccf02931ebd1e8015d3f997a7a80f1;hb=ed82d35ec5e88ef7df1d7a5baa882467571fe3c7;hpb=0d0e69953f8454e6bab7169b95440ec351979811 diff --git a/FMD/AliFMD3.h b/FMD/AliFMD3.h index 2d3f3184dbc..78e9e91c814 100644 --- a/FMD/AliFMD3.h +++ b/FMD/AliFMD3.h @@ -3,23 +3,115 @@ // #ifndef ALIFMD3_H #define ALIFMD3_H - -#ifndef ALIFMDSUBDETECTOR_H -# include "AliFMDSubDetector.h" +/** @file AliFMD3.h + @author Christian Holm Christensen + @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 -class AliFMD3 : public AliFMDSubDetector +/** @class AliFMD3 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 { -private: - Int_t fVolumeId; - Double_t fDz; -public: - AliFMD3(); - virtual ~AliFMD3(); - virtual void SetupGeometry(Int_t airId, Int_t kaptionId); - virtual void Geometry(const char* mother, Int_t pbRotId, - Int_t idRotId, Double_t z=0); - ClassDef(AliFMD3,1); // Geometry of FMD3 +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