]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIFMDDETECTOR_H | |
2 | #define ALIFMDDETECTOR_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 | #ifndef ROOT_TNamed | |
11 | # include <TNamed.h> | |
12 | #endif | |
13 | class AliFMDRing; | |
14 | ||
15 | ||
16 | //__________________________________________________________________ | |
17 | /** Base class for the geometry description and parameters of the FMD | |
18 | sub detectors FMD1, FMD2, and FMD3. | |
19 | ||
20 | This class hold common parameters of the specific FMD detectors. | |
21 | */ | |
22 | class AliFMDDetector : public TNamed | |
23 | { | |
24 | public: | |
25 | AliFMDDetector(Int_t id, AliFMDRing* inner, AliFMDRing* outer); | |
26 | AliFMDDetector(const AliFMDDetector& other); | |
27 | AliFMDDetector& operator=(const AliFMDDetector& other); | |
28 | virtual ~AliFMDDetector() {} | |
29 | /** Initialize the geometry */ | |
30 | virtual void Init(); | |
31 | ||
32 | /** @param x Detector number */ | |
33 | void SetId(Int_t x) { fId = x; } | |
34 | /** @param x Position of outer ring along z */ | |
35 | void SetInnerZ(Double_t x) { fInnerZ = x; } | |
36 | /** @param x Position of outer ring along z */ | |
37 | void SetOuterZ(Double_t x) { fOuterZ = x; } | |
38 | /** @param x Thickness of honeycomb plate */ | |
39 | void SetHoneycombThickness(Double_t x=1) { fHoneycombThickness = x; } | |
40 | /** @param x Thickness of aluminium of honeycomb */ | |
41 | void SetAlThickness(Double_t x=.1) { fAlThickness = x; } | |
42 | /** @param x Inner radius of inner honeycomb */ | |
43 | void SetInnerHoneyLowR(Double_t x) { fInnerHoneyLowR = x; } | |
44 | /** @param x Outer radius of inner honeycomb */ | |
45 | void SetInnerHoneyHighR(Double_t x) { fInnerHoneyHighR = x; } | |
46 | /** @param x Inner radius of outer honeycomb */ | |
47 | void SetOuterHoneyLowR(Double_t x) { fOuterHoneyLowR = x; } | |
48 | /** @param x Outer radius of outer honeycomb */ | |
49 | void SetOuterHoneyHighR(Double_t x) { fOuterHoneyHighR = x; } | |
50 | ||
51 | /** @return Detector number */ | |
52 | Int_t GetId() const { return fId; } | |
53 | /** @return Position of outer ring along z */ | |
54 | Double_t GetInnerZ() const { return fInnerZ; } | |
55 | /** @return Position of outer ring along z */ | |
56 | Double_t GetOuterZ() const { return fOuterZ; } | |
57 | /** @return Thickness of honeycomb plate */ | |
58 | Double_t GetHoneycombThickness() const { return fHoneycombThickness; } | |
59 | /** @return Thickness of aluminium of honeycomb */ | |
60 | Double_t GetAlThickness() const { return fAlThickness; } | |
61 | /** @return Inner radius of inner honeycomb */ | |
62 | Double_t GetInnerHoneyLowR() const { return fInnerHoneyLowR; } | |
63 | /** @return Outer radius of inner honeycomb */ | |
64 | Double_t GetInnerHoneyHighR() const { return fInnerHoneyHighR; } | |
65 | /** @return Inner radius of outer honeycomb */ | |
66 | Double_t GetOuterHoneyLowR() const { return fOuterHoneyLowR; } | |
67 | /** @return Outer radius of outer honeycomb */ | |
68 | Double_t GetOuterHoneyHighR() const { return fOuterHoneyHighR; } | |
69 | ||
70 | /** @return Inner ring information */ | |
71 | AliFMDRing* GetInner() const { return fInner; } | |
72 | /** @return Outer ring information */ | |
73 | AliFMDRing* GetOuter() const { return fOuter; } | |
74 | /** @param id Id of ring to get | |
75 | @return Pointer to ring, 0 on failure */ | |
76 | AliFMDRing* GetRing(Char_t id) const; | |
77 | /** @param id Id of ring to get | |
78 | @return Z position of ring or 0 on failure */ | |
79 | Double_t GetRingZ(Char_t id) const; | |
80 | ||
81 | void Detector2XYZ(Char_t ring, UShort_t sector, UShort_t strip, | |
82 | Double_t& x, Double_t& y, Double_t& z) const; | |
83 | Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z, | |
84 | Char_t& ring, UShort_t& sector, UShort_t& strip) const; | |
85 | protected: | |
86 | Int_t fId; // Detector number | |
87 | Double_t fInnerZ; // Position of outer ring along z | |
88 | Double_t fOuterZ; // Position of outer ring along z | |
89 | Double_t fHoneycombThickness; // Thickness of honeycomb plate | |
90 | Double_t fAlThickness; // Thickness of aluminium of honeycomb | |
91 | Double_t fInnerHoneyLowR; // Inner radius of inner honeycomb | |
92 | Double_t fInnerHoneyHighR; // Outer radius of inner honeycomb | |
93 | Double_t fOuterHoneyLowR; // Inner radius of outer honeycomb | |
94 | Double_t fOuterHoneyHighR; // Outer radius of outer honeycomb | |
95 | AliFMDRing* fInner; // Pointer to inner ring information | |
96 | AliFMDRing* fOuter; // Pointer to outer ring information | |
97 | ||
98 | ClassDef(AliFMDDetector, 1); // | |
99 | }; | |
100 | ||
101 | #endif | |
102 | //____________________________________________________________________ | |
103 | // | |
104 | // Local Variables: | |
105 | // mode: C++ | |
106 | // End: | |
107 | // | |
108 | // EOF | |
109 | // |