]>
Commit | Line | Data |
---|---|---|
0d0e6995 | 1 | #ifndef ALIFMDRING_H |
2 | #define ALIFMDRING_H | |
4347b38f | 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 | */ | |
68e82e8d | 10 | //__________________________________________________________________ |
11 | // | |
12 | // Parameters of the FMD rings. | |
13 | // | |
14 | // This class is responsible to make the (common) rings of the three | |
15 | // sub-detectors. | |
16 | // | |
4347b38f | 17 | #ifndef ALIFMDPOLYGON_H |
97961cbd | 18 | # include "AliFMDPolygon.h" |
4347b38f | 19 | #endif |
20 | #ifndef ROOT_TArrayI | |
21 | # include <TArrayI.h> | |
22 | #endif | |
23 | ||
24 | class TBrowser; | |
25 | class TNode; | |
26 | class TObjArray; | |
27 | class TShape; | |
28 | class TList; | |
29 | ||
30 | ||
31 | //__________________________________________________________________ | |
42403906 | 32 | class AliFMDRing : public TObject |
4347b38f | 33 | { |
4347b38f | 34 | public: |
4347b38f | 35 | AliFMDRing(Char_t id='\0', Bool_t detailed=kTRUE); |
68e82e8d | 36 | AliFMDRing(const AliFMDRing& other); |
37 | AliFMDRing& operator=(const AliFMDRing& other); | |
4347b38f | 38 | virtual ~AliFMDRing(); |
68e82e8d | 39 | |
4347b38f | 40 | void Init(); |
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, | |
46 | Int_t idRotId); | |
47 | void SimpleGeometry(TList* nodes, | |
48 | TNode* mother, | |
49 | Int_t colour, | |
50 | Double_t z, | |
51 | Int_t n); | |
52 | void Gsatt(); | |
53 | void Draw(Option_t* opt="HOL") const; //*MENU* | |
54 | void Browse(TBrowser* b); | |
55 | Bool_t IsFolder() const { return kTRUE; } | |
56 | ||
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; } | |
79 | ||
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; } | |
90 | ||
91 | void SetModuleSpacing(Double_t spacing) { fModuleSpacing = spacing; } | |
92 | void SetPrintboardThickness(Double_t thickness) { fPrintboardThickness = thickness; } | |
93 | ||
42403906 | 94 | protected: |
95 | Char_t fId; // ID | |
68e82e8d | 96 | Bool_t fDetailed; // True if a detailed geometry is made |
42403906 | 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 | |
105 | ||
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 | |
118 | ||
119 | Double_t fModuleSpacing; // Staggering offset | |
120 | Double_t fPrintboardThickness; // Thickness of print board | |
121 | ||
122 | TArrayI fRotations; // Array of rotations | |
123 | TShape* fShape; // Shape used for event display | |
124 | TObjArray* fRotMatricies; // Matricies used for event display | |
125 | ||
126 | AliFMDPolygon fPolygon; // Polygon shape | |
127 | ||
68e82e8d | 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 | |
134 | ||
0d0e6995 | 135 | ClassDef(AliFMDRing, 1) // FMD Ring volume parameters |
4347b38f | 136 | }; |
137 | #endif | |
0d0e6995 | 138 | //____________________________________________________________________ |
139 | // | |
140 | // Local Variables: | |
141 | // mode: C++ | |
142 | // End: | |
4347b38f | 143 | // |
144 | // EOF | |
145 | // |