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