3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
8 * See cxx source for full Copyright notice
10 //__________________________________________________________________
12 // Parameters of the FMD rings.
14 // This class is responsible to make the (common) rings of the three
17 #ifndef ALIFMDPOLYGON_H
18 # include "AliFMDPolygon.h"
31 //__________________________________________________________________
32 class AliFMDRing : public TObject
35 AliFMDRing(Char_t id='\0', Bool_t detailed=kTRUE);
36 AliFMDRing(const AliFMDRing& other);
37 AliFMDRing& operator=(const AliFMDRing& other);
38 virtual ~AliFMDRing();
41 bool IsWithin(size_t moduleNo, double x, double y) const;
42 void SetupCoordinates();
43 void SetupGeometry(Int_t vacuumId, Int_t siId, Int_t pcbId,
44 Int_t pbRotId, Int_t idRotId);
45 void Geometry(const char* mother, Int_t baseId, Double_t z, Int_t pbRotId,
47 void SimpleGeometry(TList* nodes,
53 void Draw(Option_t* opt="HOL") const; //*MENU*
54 void Browse(TBrowser* b);
55 Bool_t IsFolder() const { return kTRUE; }
57 Char_t GetId() const { return fId; }
58 Int_t GetActiveId() const { return fActiveId; }
59 Int_t GetPrintboardBottomId() const { return fPrintboardBottomId; }
60 Int_t GetPrintboardTopId() const { return fPrintboardTopId; }
61 Int_t GetRingId() const { return fRingId; }
62 Int_t GetSectionId() const { return fSectionId; }
63 Int_t GetStripId() const { return fStripId; }
64 Int_t GetVirtualBackId() const { return fVirtualBackId; }
65 Int_t GetVirtualFrontId() const { return fVirtualFrontId; }
66 Double_t GetBondingWidth() const { return fBondingWidth; }
67 Double_t GetWaferRadius() const { return fWaferRadius; }
68 Double_t GetSiThickness() const { return fSiThickness; }
69 Double_t GetLowR() const { return fLowR; }
70 Double_t GetHighR() const { return fHighR; }
71 Double_t GetTheta() const { return fTheta; }
72 Int_t GetNStrips() const { return fNStrips; }
73 Int_t GetNSectors() const { return Int_t(360 / fTheta); }
74 Double_t GetLegRadius() const { return fLegRadius; }
75 Double_t GetLegLength() const { return fLegLength; }
76 Double_t GetModuleSpacing() const { return fModuleSpacing; }
77 Double_t GetPrintboardThickness() const { return fPrintboardThickness; }
78 Double_t GetRingDepth() const { return fRingDepth; }
80 void SetBondingWidth(Double_t width) { fBondingWidth = width; }
81 void SetWaferRadius(Double_t radius) { fWaferRadius = radius; }
82 void SetSiThickness(Double_t thickness) { fSiThickness = thickness; }
83 void SetLowR(Double_t lowR) { fLowR = lowR; }
84 void SetHighR(Double_t highR) { fHighR = highR; }
85 void SetTheta(Double_t theta) { fTheta = theta; }
86 void SetNStrips(Int_t nStrips) { fNStrips = nStrips; }
87 void SetLegRadius(Double_t radius) { fLegRadius = radius; }
88 void SetLegLength(Double_t length) { fLegLength = length; }
89 void SetLegOffset(Double_t offset) { fLegOffset = offset; }
91 void SetModuleSpacing(Double_t spacing) { fModuleSpacing = spacing; }
92 void SetPrintboardThickness(Double_t thickness) { fPrintboardThickness = thickness; }
96 Bool_t fDetailed; // True if a detailed geometry is made
97 Int_t fActiveId; // Active volume
98 Int_t fPrintboardBottomId; // Print board bottom volume
99 Int_t fPrintboardTopId; // Print board top volume
100 Int_t fRingId; // Ring volume
101 Int_t fSectionId; // Section volumes
102 Int_t fStripId; // Strip volumes
103 Int_t fVirtualBackId; // Virtual Back volume
104 Int_t fVirtualFrontId; // Virtual Front volume
106 Double_t fBondingWidth; // With of bonding pad on sensor
107 Double_t fWaferRadius; // Size of wafer the sensor was made from
108 Double_t fSiThickness; // Thickness of sensor
109 Double_t fLowR; // Lower radius of ring
110 Double_t fHighR; // Upper radius of ring
111 Double_t fTheta; // Opening angle of the silicon wafers
112 Int_t fNStrips; // Number of strips
113 Double_t fRingDepth; // How far the ring extends beyond
114 // the z value given.
115 Double_t fLegRadius; // Radius of support legs
116 Double_t fLegLength; // Radius of support legs
117 Double_t fLegOffset; // Radius of support legs
119 Double_t fModuleSpacing; // Staggering offset
120 Double_t fPrintboardThickness; // Thickness of print board
122 TArrayI fRotations; // Array of rotations
123 TShape* fShape; // Shape used for event display
124 TObjArray* fRotMatricies; // Matricies used for event display
126 AliFMDPolygon fPolygon; // Polygon shape
128 static const Char_t* fgkRingFormat; // Format for Ring names
129 static const Char_t* fgkVirtualFormat; // Format for Virtual names
130 static const Char_t* fgkActiveFormat; // Format for Active names
131 static const Char_t* fgkSectorFormat; // Format for Sector names
132 static const Char_t* fgkStripFormat; // Format for Strip names
133 static const Char_t* fgkPrintboardFormat; // Format for Printboard names
135 ClassDef(AliFMDRing, 1) // FMD Ring volume parameters
138 //____________________________________________________________________