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