Added docs and fixed a bug
[u/mrichter/AliRoot.git] / FMD / AliFMDSubDetector.h
1 #ifndef ALIFMDSUBDETECTOR_H
2 #define ALIFMDSUBDETECTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice                               
9  */
10 //____________________________________________________________________
11 // 
12 // Parameters of a sub-detector, and builder of sub detector geometry 
13 //
14 #ifndef ROOT_TObject
15 # include <TObject.h>
16 #endif
17 class TNode;
18 class TList;
19 class AliFMDRing;
20
21
22 //__________________________________________________________________
23 class AliFMDSubDetector : public TObject
24 {
25 public:  
26   AliFMDSubDetector(Int_t n);
27   virtual ~AliFMDSubDetector() {}
28   virtual void   SetupGeometry(Int_t airId, Int_t alId, Int_t cId=0);  
29   virtual void   Geometry(const char* mother, Int_t pbRotId, 
30                           Int_t idRotId, Double_t z=0);
31   virtual void   SimpleGeometry(TList* nodes, 
32                                 TNode* mother, 
33                                 Int_t colour, 
34                                 Double_t zMother);
35   
36   virtual void   Gsatt();
37   virtual void   Draw(Option_t* option="BIOL0") const; //*MENU*
38   virtual Bool_t CheckHit(Char_t ring, Int_t module, Double_t x, Double_t y);
39
40   void   SetInner(AliFMDRing* r)             { fInner = r; }
41   void   SetOuter(AliFMDRing* r)             { fOuter = r; }
42   void   SetInnerZ(Double_t z)               { fInnerZ = z; }
43   void   SetOuterZ(Double_t z)               { fOuterZ = z; }
44   void   SetHoneycombThickness(Double_t t=1) { fHoneycombThickness = t; }
45   void   SetInnerHoneyLowR(Double_t r)       { fInnerHoneyLowR = r; }
46   void   SetInnerHoneyHighR(Double_t r)      { fInnerHoneyHighR = r; }
47   void   SetOuterHoneyLowR(Double_t r)       { fOuterHoneyLowR = r; }
48   void   SetOuterHoneyHighR(Double_t r)      { fOuterHoneyHighR = r; }
49   void   SetAlThickness(Double_t t=.05)      { fAlThickness = t; }
50      
51   Double_t    GetInnerZ()             const { return fInnerZ; }
52   Double_t    GetOuterZ()             const { return fOuterZ; }
53   AliFMDRing* GetInner()              const { return fInner; }
54   AliFMDRing* GetOuter()              const { return fOuter; }
55   Double_t    GetHoneycombThickness() const { return fHoneycombThickness; }
56   Double_t    GetInnerHoneyLowR()     const { return fInnerHoneyLowR; }
57   Double_t    GetInnerHoneyHighR()    const { return fInnerHoneyHighR; }
58   Double_t    GetOuterHoneyLowR()     const { return fOuterHoneyLowR; }
59   Double_t    GetOuterHoneyHighR()    const { return fOuterHoneyHighR; }
60   Double_t    GetAlThickness()        const { return fAlThickness; }
61   Int_t       GetId()                 const { return fId; }     
62   Bool_t      IsFolder()              const { return kTRUE; }
63
64 protected:
65   Int_t       fId;                 // Detector number 
66   Double_t    fInnerZ;             // Position of outer ring along z
67   Double_t    fOuterZ;             // Position of outer ring along z 
68   Double_t    fHoneycombThickness; // Thickness of honeycomb plate 
69   Double_t    fAlThickness;        // Thickness of aluminium of honeycomb
70   Double_t    fInnerHoneyLowR;     // Inner radius of inner honeycomb
71   Double_t    fInnerHoneyHighR;    // Outer radius of inner honeycomb
72   Int_t       fInnerHoneyTopId;    // Volume ID of top of inner honeycomb
73   Int_t       fInnerHoneyBottomId; // Volume ID of bottom of inner honeycomb
74   Double_t    fOuterHoneyLowR;     // Inner radius of outer honeycomb
75   Double_t    fOuterHoneyHighR;    // Outer radius of outer honeycomb
76   Int_t       fOuterHoneyTopId;    // Volume ID of top of outer honeycomb   
77   Int_t       fOuterHoneyBottomId; // Volume ID of bottom of outer honeycomb
78
79   Int_t       fRotationId;         // The ID of the sub-detector rotation
80   
81   AliFMDRing* fInner;              // Reference to inner ring description
82   AliFMDRing* fOuter;              // Reference to outer ring description
83
84   static const Char_t* fgkHoneyTopFormat;         // Format of honeycomb name
85   static const Char_t* fgkHoneyBottomFormat;      // Format of honeycomb name
86   static const Char_t* fgkHoneyTopInnerFormat;    // Format of honeycomb name
87   static const Char_t* fgkHoneyBottomInnerFormat; // Format of honeycomb name
88
89   ClassDef(AliFMDSubDetector, 1) // FMD Sub detector base class
90 };
91
92 #endif
93 //____________________________________________________________________
94 //
95 // Local Variables:
96 //   mode: C++
97 // End:
98 //
99 // EOF
100 //