X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMD3.h;h=785dba99ead314b78720171c6a8d50468370d030;hb=790a8a943dfd39ce2939493300fe69954712c249;hp=b9fdb717cb69cfc637b6af5bff64e51675cf61dc;hpb=42403906a791989192b0a7f2f5fda18146e5455c;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMD3.h b/FMD/AliFMD3.h index b9fdb717cb6..785dba99ead 100644 --- a/FMD/AliFMD3.h +++ b/FMD/AliFMD3.h @@ -3,23 +3,121 @@ // #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 -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 { -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); -protected: - Int_t fVolumeId; - Double_t fDz; - 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(); + + /** @param z Z position of front of nose */ + void SetNoseZ(Double_t z=-46) { fNoseZ = z; } + /** @param r Nose inner radius */ + void SetNoseLowR(Double_t r=5.5) { fNoseLowR = r; } + /** @param r Nose outer radius */ + void SetNoseHighR(Double_t r=6.7) { fNoseHighR = r; } + /** @param l Length of nose in Z */ + void SetNoseLength(Double_t l=2.8) { fNoseLength = l; } + /** @param r Inner radius of base of cone */ + void SetBackLowR(Double_t r=61./2) { fBackLowR = r; } + /** @param r Outer radius of base of cone */ + void SetBackHighR(Double_t r=66.8/2) { fBackHighR = r; } + /** @param l Length of base of cone in Z */ + void SetBackLength(Double_t l=1.4) { fBackLength = l; } + /** @param t Thickness of support beams */ + void SetBeamThickness(Double_t t=.5) { fBeamThickness = t; } + /** @param w Width of support beams */ + void SetBeamWidth(Double_t w=6) { fBeamWidth = w; } + /** @param l Length of the cone in Z */ + void SetConeLength(Double_t l=30.9) { fConeLength = l; } + /** @param r Outer radius of flanges */ + void SetFlangeR(Double_t r=49.25) { fFlangeR = r; } + /** @param n Number of support beams */ + void SetNBeam(Int_t n=8) { fNBeam = n; } + /** @param n Number of support flanges */ + void SetNFlange(Int_t n=4) { fNFlange = n; } + + /** @return Z position of front of nose */ + Double_t GetNoseZ() const { return fNoseZ; } + /** @return Nose inner radius */ + Double_t GetNoseLowR() const { return fNoseLowR; } + /** @return Nose outer radius */ + Double_t GetNoseHighR() const { return fNoseHighR; } + /** @return Length of nose in Z */ + Double_t GetNoseLength() const { return fNoseLength; } + /** @return Inner radius of base of cone */ + Double_t GetBackLowR() const { return fBackLowR; } + /** @return Outer radius of base of cone */ + Double_t GetBackHighR() const { return fBackHighR; } + /** @return Length of base of cone in Z */ + Double_t GetBackLength() const { return fBackLength; } + /** @return Thickness of support beams */ + Double_t GetBeamThickness() const { return fBeamThickness; } + /** @return Width of support beams */ + Double_t GetBeamWidth() const { return fBeamWidth; } + /** @return Length of the cone in Z */ + Double_t GetConeLength() const { return fConeLength; } + /** @return Outer radius of flanges */ + Double_t GetFlangeR() const { return fFlangeR; } + /** @return Midpoint of mother volume */ + Double_t GetZ() const { return fZ; } + /** @return Slope of cone */ + Double_t GetAlpha() const { return fAlpha; } + /** @return Number of support beams */ + Int_t GetNBeam() const { return fNBeam; } + /** @return Number of support flanges */ + Int_t GetNFlange() const { return fNFlange; } + + /** 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 fNoseLowR; // Nose inner radius + Double_t fNoseHighR; // Nose outer radius + Double_t fNoseLength; // Length of nose in Z + Double_t fBackLowR; // Inner radius of base of cone + Double_t fBackHighR; // Outer radius of base of cone + Double_t fBackLength; // Length of base of cone in Z + Double_t fBeamThickness; // Thickness of support beams + Double_t fBeamWidth; // Width of support beams + Double_t fConeLength; // Length of the cone in Z + Double_t fFlangeR; // Outer radius of flanges + Double_t fZ; // Midpoint of mother volume + Double_t fAlpha; // Slope of cone + Int_t fNBeam; // Number of support beams + Int_t fNFlange; // Number of support flangesy + ClassDef(AliFMD3, 1); }; #endif