]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDRing.h
Implement the new logging system (AliLog)
[u/mrichter/AliRoot.git] / FMD / AliFMDRing.h
CommitLineData
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
18class TBrowser;
19class TNode;
20class TObjArray;
21class TShape;
22class TList;
23
24
25//__________________________________________________________________
26struct 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
60public:
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//