]>
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 | */ | |
4347b38f | 10 | #ifndef ALIFMDPOLYGON_H |
11 | # include <AliFMDPolygon.h> | |
12 | #endif | |
13 | #ifndef ROOT_TArrayI | |
14 | # include <TArrayI.h> | |
15 | #endif | |
16 | ||
17 | class TBrowser; | |
18 | class TNode; | |
19 | class TObjArray; | |
20 | class TShape; | |
21 | class TList; | |
22 | ||
23 | ||
24 | //__________________________________________________________________ | |
25 | struct AliFMDRing : public TObject | |
26 | { | |
27 | Char_t fId; // ID | |
28 | Bool_t fDetailed; | |
29 | Int_t fActiveId; // Active volume | |
30 | Int_t fPrintboardBottomId; // Print board bottom volume | |
31 | Int_t fPrintboardTopId; // Print board top volume | |
32 | Int_t fRingId; // Ring volume | |
33 | Int_t fSectionId; // Section volumes | |
34 | Int_t fStripId; // Strip volumes | |
35 | Int_t fVirtualBackId; // Virtual Back volume | |
36 | Int_t fVirtualFrontId; // Virtual Front volume | |
37 | ||
38 | Double_t fBondingWidth; // With of bonding pad on sensor | |
39 | Double_t fWaferRadius; // Size of wafer the sensor was made from | |
40 | Double_t fSiThickness; // Thickness of sensor | |
41 | Double_t fLowR; // Lower radius of ring | |
42 | Double_t fHighR; // Upper radius of ring | |
43 | Double_t fTheta; // Opening angle of the silicon wafers | |
44 | Int_t fNStrips; // Number of strips | |
45 | Double_t fRingDepth; // How far the ring extends beyond | |
46 | // the z value given. | |
47 | Double_t fLegRadius; // Radius of support legs | |
48 | Double_t fLegLength; // Radius of support legs | |
49 | Double_t fLegOffset; // Radius of support legs | |
50 | ||
51 | Double_t fModuleSpacing; // Staggering offset | |
52 | Double_t fPrintboardThickness; // Thickness of print board | |
53 | ||
54 | TArrayI fRotations; // Array of rotations | |
55 | TShape* fShape; // Shape used for event display | |
56 | TObjArray* fRotMatricies; // Matricies used for event display | |
57 | ||
58 | AliFMDPolygon fPolygon; // Polygon shape | |
59 | public: | |
60 | //---------------------------------------------------------------- | |
61 | AliFMDRing(Char_t id='\0', Bool_t detailed=kTRUE); | |
62 | virtual ~AliFMDRing(); | |
63 | void Init(); | |
64 | bool IsWithin(size_t moduleNo, double x, double y) const; | |
65 | void SetupCoordinates(); | |
66 | void SetupGeometry(Int_t vacuumId, Int_t siId, Int_t pcbId, | |
67 | Int_t pbRotId, Int_t idRotId); | |
68 | void Geometry(const char* mother, Int_t baseId, Double_t z, Int_t pbRotId, | |
69 | Int_t idRotId); | |
70 | void SimpleGeometry(TList* nodes, | |
71 | TNode* mother, | |
72 | Int_t colour, | |
73 | Double_t z, | |
74 | Int_t n); | |
75 | void Gsatt(); | |
76 | void Draw(Option_t* opt="HOL") const; //*MENU* | |
77 | void Browse(TBrowser* b); | |
78 | Bool_t IsFolder() const { return kTRUE; } | |
79 | ||
80 | Char_t GetId() const { return fId; } | |
81 | Int_t GetActiveId() const { return fActiveId; } | |
82 | Int_t GetPrintboardBottomId() const { return fPrintboardBottomId; } | |
83 | Int_t GetPrintboardTopId() const { return fPrintboardTopId; } | |
84 | Int_t GetRingId() const { return fRingId; } | |
85 | Int_t GetSectionId() const { return fSectionId; } | |
86 | Int_t GetStripId() const { return fStripId; } | |
87 | Int_t GetVirtualBackId() const { return fVirtualBackId; } | |
88 | Int_t GetVirtualFrontId() const { return fVirtualFrontId; } | |
89 | Double_t GetBondingWidth() const { return fBondingWidth; } | |
90 | Double_t GetWaferRadius() const { return fWaferRadius; } | |
91 | Double_t GetSiThickness() const { return fSiThickness; } | |
92 | Double_t GetLowR() const { return fLowR; } | |
93 | Double_t GetHighR() const { return fHighR; } | |
94 | Double_t GetTheta() const { return fTheta; } | |
95 | Int_t GetNStrips() const { return fNStrips; } | |
96 | Int_t GetNSectors() const { return Int_t(360 / fTheta); } | |
97 | Double_t GetLegRadius() const { return fLegRadius; } | |
98 | Double_t GetLegLength() const { return fLegLength; } | |
99 | Double_t GetModuleSpacing() const { return fModuleSpacing; } | |
100 | Double_t GetPrintboardThickness() const { return fPrintboardThickness; } | |
101 | Double_t GetRingDepth() const { return fRingDepth; } | |
102 | ||
103 | void SetBondingWidth(Double_t width) { fBondingWidth = width; } | |
104 | void SetWaferRadius(Double_t radius) { fWaferRadius = radius; } | |
105 | void SetSiThickness(Double_t thickness) { fSiThickness = thickness; } | |
106 | void SetLowR(Double_t lowR) { fLowR = lowR; } | |
107 | void SetHighR(Double_t highR) { fHighR = highR; } | |
108 | void SetTheta(Double_t theta) { fTheta = theta; } | |
109 | void SetNStrips(Int_t nStrips) { fNStrips = nStrips; } | |
110 | void SetLegRadius(Double_t radius) { fLegRadius = radius; } | |
111 | void SetLegLength(Double_t length) { fLegLength = length; } | |
112 | void SetLegOffset(Double_t offset) { fLegOffset = offset; } | |
113 | ||
114 | void SetModuleSpacing(Double_t spacing) { fModuleSpacing = spacing; } | |
115 | void SetPrintboardThickness(Double_t thickness) { fPrintboardThickness = thickness; } | |
116 | ||
0d0e6995 | 117 | ClassDef(AliFMDRing, 1) // FMD Ring volume parameters |
4347b38f | 118 | }; |
119 | #endif | |
0d0e6995 | 120 | //____________________________________________________________________ |
121 | // | |
122 | // Local Variables: | |
123 | // mode: C++ | |
124 | // End: | |
4347b38f | 125 | // |
126 | // EOF | |
127 | // |