New class to implement support for the FMD3
[u/mrichter/AliRoot.git] / FMD / AliFMD3Support.h
1 //
2 // $Id$
3 //
4 #ifndef ALIFMD3SUPPORT_H
5 #define ALIFMD3SUPPORT_H
6
7 #ifndef ROOT_TObject
8 # include <TObject.h>
9 #endif
10 #ifndef ROOT_TArrayI
11 # include <TArrayI.h>
12 #endif
13
14 class AliFMD3Support : public TObject
15 {
16 public:
17   AliFMD3Support();
18   virtual ~AliFMD3Support();
19   virtual void   SetupGeometry(Int_t airId, Int_t cId,
20                                Double_t innerZl, Double_t innerZh, 
21                                Double_t innerRl, Double_t outerZl, 
22                                Double_t outerZh, Double_t outerRl);
23   virtual void   Geometry(const char* mother, Int_t idRotId, Double_t z=0);
24   virtual void   Gsatt();
25   
26   void SetNoseZ(Double_t         x=-46)         { fNoseZ = x; }
27   void SetNoseLowR(Double_t      x=5.5)         { fNoseLowR = x; }
28   void SetNoseHighR(Double_t     x=6.7)         { fNoseHighR = x; }
29   void SetNoseLength(Double_t    x=2.8)         { fNoseLength = x; }
30   void SetBackLowR(Double_t      x=61./2)       { fBackLowR = x; }
31   void SetBackHighR(Double_t     x=66.8/2)      { fBackHighR = x; }
32   void SetBackLength(Double_t    x=1.4)         { fBackLength = x; }
33   void SetBeamThickness(Double_t x=.5)          { fBeamThickness = x; }
34   void SetBeamWidth(Double_t     x=6)           { fBeamWidth = x; }
35   void SetConeLength(Double_t    x=30.9)        { fConeLength = x; }
36   void SetFlangeR(Double_t       x=49.25)       { fFlangeR = x; }
37   void SetNBeam(Int_t            n=8)           { fNBeam = n; }
38   void SetNFlange(Int_t          n=4)           { fNFlange = n; }
39   
40   Double_t GetNoseZ() const             { return fNoseZ; }
41   Double_t GetNoseLowR() const          { return fNoseLowR; }
42   Double_t GetNoseHighR() const         { return fNoseHighR; }
43   Double_t GetNoseLength() const        { return fNoseLength; }
44   Double_t GetBackLowR() const          { return fBackLowR; }
45   Double_t GetBackHighR() const         { return fBackHighR; }
46   Double_t GetBackLength() const        { return fBackLength; }
47   Double_t GetBeamThickness() const     { return fBeamThickness; }
48   Double_t GetBeamWidth() const         { return fBeamWidth; }
49   Double_t GetConeLength() const        { return fConeLength; }
50   Double_t GetFlangeR() const           { return fFlangeR; }
51   Int_t    GetNBeam() const             { return fNBeam; }
52   Int_t    GetNFlange() const           { return fNFlange; }
53   Double_t GetZ() const                 { return fZ; }
54   Double_t ConeR(Double_t z, Option_t* opt="O") const;
55 protected:
56   Double_t fNoseZ;              // Z position of front of nose
57   Double_t fNoseLowR;           // Nose inner radius
58   Double_t fNoseHighR;          // Nose outer radius
59   Double_t fNoseLength;         // Length of nose in Z
60   Double_t fBackLowR;           // Inner radius of base of cone
61   Double_t fBackHighR;          // Outer radius of base of cone
62   Double_t fBackLength;         // Length of base of cone in Z
63   Double_t fBeamThickness;      // Thickness of support beams
64   Double_t fBeamWidth;          // Width of support beams
65   Double_t fConeLength;         // Length of the cone in Z
66   Double_t fFlangeR;            // Outer radius of flanges
67   Double_t fZ;                  // Midpoint of mother volume 
68   Double_t fAlpha;              // Slope of cone 
69   
70   Int_t    fNBeam;              // Number of support beams 
71   Int_t    fNFlange;            // Number of support flanges
72   Int_t    fNoseId;             // Id of nose volume
73   Int_t    fBeamId;             // Id of beam volumes 
74   Int_t    fBackId;             // Id of base volume
75   Int_t    fFlangeId;           // Id of flange volume
76   TArrayI  fRotations;
77   
78   static const Char_t* fgkNoseName; // Name of nose volume 
79   static const Char_t* fgkBeamName; // Name of beam volumes
80   static const Char_t* fgkBackName; // Name of base volume 
81   static const Char_t* fgkFlangeName; // Name of flange volume 
82   
83   ClassDef(AliFMD3Support,1); // Geometry of Support for the FMD3 
84 };
85
86 #endif
87 //____________________________________________________________________
88 //
89 // Local Variables:
90 //   mode: C++
91 // End:
92 //
93 //
94 // EOF
95 //