00001 #ifndef ALIFMDDETECTOR_H
00002 #define ALIFMDDETECTOR_H
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_TNamed
00011 # include <TNamed.h>
00012 #endif
00013 class AliFMDRing;
00014 class TGeoMatrix;
00015
00017
00024 class AliFMDDetector : public TNamed
00025 {
00026 public:
00032 AliFMDDetector(Int_t id, AliFMDRing* inner, AliFMDRing* outer);
00035 AliFMDDetector(const AliFMDDetector& other);
00039 AliFMDDetector& operator=(const AliFMDDetector& other);
00040 virtual ~AliFMDDetector() {}
00042 virtual void Init();
00045 virtual void InitTransformations();
00046
00048 void SetId(Int_t x) { fId = x; }
00050 void SetInnerZ(Double_t x) { fInnerZ = x; }
00052 void SetOuterZ(Double_t x) { fOuterZ = x; }
00054 void SetHoneycombThickness(Double_t x=1) { fHoneycombThickness = x; }
00056 void SetAlThickness(Double_t x=.1) { fAlThickness = x; }
00058 void SetInnerHoneyLowR(Double_t x) { fInnerHoneyLowR = x; }
00060 void SetInnerHoneyHighR(Double_t x) { fInnerHoneyHighR = x; }
00062 void SetOuterHoneyLowR(Double_t x) { fOuterHoneyLowR = x; }
00064 void SetOuterHoneyHighR(Double_t x) { fOuterHoneyHighR = x; }
00065
00067 Int_t GetId() const { return fId; }
00069 Double_t GetInnerZ() const { return fInnerZ; }
00071 Double_t GetOuterZ() const { return fOuterZ; }
00073 Double_t GetHoneycombThickness() const { return fHoneycombThickness; }
00075 Double_t GetAlThickness() const { return fAlThickness; }
00077 Double_t GetInnerHoneyLowR() const { return fInnerHoneyLowR; }
00079 Double_t GetInnerHoneyHighR() const { return fInnerHoneyHighR; }
00081 Double_t GetOuterHoneyLowR() const { return fOuterHoneyLowR; }
00083 Double_t GetOuterHoneyHighR() const { return fOuterHoneyHighR; }
00084
00086 AliFMDRing* GetInner() const { return fInner; }
00088 AliFMDRing* GetOuter() const { return fOuter; }
00091 AliFMDRing* GetRing(Char_t id) const;
00094 Double_t GetRingZ(Char_t id) const;
00095
00106 void Detector2XYZ(Char_t ring, UShort_t sector, UShort_t strip,
00107 Double_t& x, Double_t& y, Double_t& z) const;
00125 Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z,
00126 Char_t& ring, UShort_t& sector, UShort_t& strip) const;
00127 protected:
00131 Bool_t HasAllTransforms(Char_t ring) const;
00136 TGeoMatrix* FindTransform(Char_t ring, UShort_t sector) const;
00137 Int_t fId;
00138 Double_t fInnerZ;
00139 Double_t fOuterZ;
00140 Double_t fHoneycombThickness;
00141 Double_t fAlThickness;
00142 Double_t fInnerHoneyLowR;
00143 Double_t fInnerHoneyHighR;
00144 Double_t fOuterHoneyLowR;
00145 Double_t fOuterHoneyHighR;
00146 AliFMDRing* fInner;
00147 AliFMDRing* fOuter;
00148 TObjArray* fInnerTransforms;
00149 TObjArray* fOuterTransforms;
00150
00151 ClassDef(AliFMDDetector, 1);
00152 };
00153
00154 #endif
00155
00156
00157
00158
00159
00160
00161
00162