]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIITSV11GEOMETRYSDD_H | |
2 | #define ALIITSV11GEOMETRYSDD_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // Ludovic Gaudichet (Ludovic.Gaudichet@to.infn.it) | |
8 | ||
9 | class TGeoVolume; | |
10 | class TGeoCombiTrans; | |
11 | class TGeoArb8; | |
12 | class TGeoNode; | |
13 | ||
14 | #include <TObjArray.h> | |
15 | ||
16 | //---------------------------------------------------------------------- | |
17 | class AliITSv11GeomSDDcable: public TObject { | |
18 | public: | |
19 | AliITSv11GeomSDDcable():TObject(){fInitialNode = 0; fPointArray.SetOwner(); }; | |
20 | virtual ~AliITSv11GeomSDDcable(); | |
21 | void AddCheckPoint( TGeoVolume *vol, Int_t iCheckPt, Double_t *coord); | |
22 | Int_t GetNCheckPoints() {return fVolumeArray.GetEntriesFast();}; | |
23 | Int_t GetCheckPoint( Int_t iCheckPt, Int_t nOccur, Int_t motherLevel, | |
24 | Double_t *coord); | |
25 | void SetInitialNode(TGeoVolume *vol); | |
26 | void ResetInitialNode(); | |
27 | ||
28 | protected: | |
29 | bool CheckDaughter(Int_t i, TGeoNode* node); | |
30 | ||
31 | Int_t fNodeInd[50]; | |
32 | TObjArray fVolumeArray; | |
33 | TObjArray fPointArray; | |
34 | TGeoVolume *fCurrentVol; | |
35 | TGeoNode *fInitialNode; | |
36 | ||
37 | ClassDef(AliITSv11GeomSDDcable,1) // ITS v11 SDD cable geometry | |
38 | }; | |
39 | ||
40 | ||
41 | ||
42 | //---------------------------------------------------------------------- | |
43 | class AliITSv11GeomSDDcableNap : public AliITSv11GeomSDDcable { | |
44 | public: | |
45 | AliITSv11GeomSDDcableNap(Double_t width, Double_t thick); | |
46 | virtual ~AliITSv11GeomSDDcableNap() {}; | |
47 | Int_t CreateAndInsertCableSegment(Int_t p1, Int_t p2, TGeoVolume *motherVol); | |
48 | protected: | |
49 | Double_t fWidth; | |
50 | Double_t fThick; | |
51 | ||
52 | ClassDef(AliITSv11GeomSDDcableNap,1) // ITS v11 SDD cable Nap geometry | |
53 | }; | |
54 | ||
55 | ||
56 | ||
57 | //---------------------------------------------------------------------- | |
58 | class AliITSv11GeometrySDD : public AliITSv11Geometry { | |
59 | ||
60 | public: | |
61 | AliITSv11GeometrySDD(); | |
62 | AliITSv11GeometrySDD(Int_t debug); | |
63 | virtual ~AliITSv11GeometrySDD(){}; | |
64 | ||
65 | // Main functions | |
66 | virtual void Layer3(TGeoVolume *Moth); | |
67 | virtual void Layer4(TGeoVolume *Moth); | |
68 | ||
69 | // Functions for coding, testing, debugging | |
70 | void ShowOnePiece(TGeoVolume *Moth); | |
71 | void CheckOverlaps(Double_t precision = 0.01); | |
72 | void AddOnlySegment(Int_t i) { fAddOnlySegment=i; }; | |
73 | void AddOnlyLay3Ladder(Int_t min,Int_t max){ | |
74 | fAddOnlyLadder3min = min; fAddOnlyLadder3max = max; }; | |
75 | void AddOnlyLay4Ladder(Int_t min,Int_t max) { | |
76 | fAddOnlyLadder4min = min; fAddOnlyLadder4max = max;}; | |
77 | ||
78 | virtual void SetGeomParameters(); | |
79 | ||
80 | ||
81 | AliITSv11GeomSDDcable cable; | |
82 | ||
83 | private: | |
84 | ||
85 | // Create ladder virtual volumes and its detectors (inside layers 3 and 4) | |
86 | virtual TGeoVolume* CreateLay3Ladder(); | |
87 | virtual TGeoVolume* CreateLay3Detectors(); | |
88 | virtual TGeoVolume* CreateLay4Ladder(); | |
89 | virtual TGeoVolume* CreateLay4Detectors(); | |
90 | ||
91 | // Create virtual volumes inside a ladder volume | |
92 | virtual TGeoVolume* CreateLadderSegment(Int_t iLay, Int_t iSeg); | |
93 | virtual TGeoVolume* CreateEndLadder(Int_t iLay, Int_t); | |
94 | virtual TGeoVolume* CreateHybrid(Int_t iSeg); | |
95 | ||
96 | ||
97 | // Create a TGeoCombiTrans : general rotation in phi and (dy,dz) translation | |
98 | TGeoCombiTrans* CreateCombiTrans( const char *name, | |
99 | Double_t dy, Double_t dz, Double_t dphi); | |
100 | ||
101 | // add (dx,dy,dz) translation to a initial TGeoCombiTrans | |
102 | void AddTranslationToCombiTrans( TGeoCombiTrans* ct, | |
103 | Double_t dx=0, Double_t dy=0, Double_t dz=0); | |
104 | ||
105 | // Create one side of the CF corner of the CF structure | |
106 | TGeoArb8* CreateLadderSide( Double_t dz, Double_t angle, Double_t xSign, | |
107 | Double_t L, Double_t H, Double_t l); | |
108 | ||
109 | // Create de CF structure in the ladder segment | |
110 | void AddLadderCFstruct(Double_t dy, TGeoVolume* vol); | |
111 | ||
112 | // Create a pin support object | |
113 | virtual TGeoVolume* CreatePinSupport(); | |
114 | ||
115 | virtual TGeoVolume* CreateCoolPipeSupportL(); | |
116 | virtual TGeoVolume* CreateCoolPipeSupportR(); | |
117 | ||
118 | // Create a SDD detector object | |
119 | virtual TGeoVolume* CreateSDDsensor(); | |
120 | ||
121 | // Create the base of the thermal bridge, supporting hybrids on ladder | |
122 | virtual TGeoVolume* CreateBaseThermalBridge(); | |
123 | ||
124 | //************************************************** | |
125 | ||
126 | Int_t fAddOnlyLadder3min; | |
127 | Int_t fAddOnlyLadder3max; | |
128 | Int_t fAddOnlyLadder4min; | |
129 | Int_t fAddOnlyLadder4max; | |
130 | Int_t fAddOnlySegment; | |
131 | Int_t fColorCarbonFiber; | |
132 | Int_t fColorRyton; | |
133 | Int_t fColorPhynox; | |
134 | Int_t fColorSilicon; | |
135 | ||
136 | bool fCoolingOn; | |
137 | ||
138 | // parameters of the SDD geometry : | |
139 | static const Double_t fLay3Rmin; | |
140 | static const Double_t fLay3Rmax; | |
141 | static const Double_t fLay3Length; | |
142 | static const Double_t fLay3LadderLength; | |
143 | static const Double_t fLay3DetLongRadius; | |
144 | static const Double_t fLay3LaddTopCornerEnd; | |
145 | static const Double_t fLay3ZPlusEndLength; | |
146 | static const Int_t fLay3Nladd; | |
147 | static const Int_t fLay3Ndet; | |
148 | static const Double_t fLay3DetShortRadius; | |
149 | ||
150 | static const Double_t fLay4Rmin; | |
151 | static const Double_t fLay4Rmax; | |
152 | static const Double_t fLay4Length; | |
153 | static const Double_t fLay4LadderLength; | |
154 | static const Double_t fLay4LaddTopCornerEnd; | |
155 | static const Double_t fLay4ZPlusEndLength; | |
156 | static const Int_t fLay4Nladd; | |
157 | static const Int_t fLay4Ndet; | |
158 | static const Double_t fLay4DetShortRadius; | |
159 | static const Double_t fLay4DetLongRadius; | |
160 | ||
161 | static const Double_t fSegmentLength; | |
162 | static const Double_t fLadderWidth; | |
163 | static const Double_t fLadderHeight; | |
164 | static const Double_t fLadderBeamRadius; | |
165 | static const Double_t fLadderLa; | |
166 | static const Double_t fLadderHa; | |
167 | static const Double_t fLadderLb; | |
168 | static const Double_t fLadderHb; | |
169 | static const Double_t fLadderl; | |
170 | ||
171 | static const Double_t fBottomBeamAngle; | |
172 | static const Double_t fBeamSidePhi; | |
173 | ||
174 | static const Double_t fWaferThickness; | |
175 | static const Double_t fWaferWidth; | |
176 | static const Double_t fWaferLength; | |
177 | ||
178 | static const Double_t fHybridLength; | |
179 | static const Double_t fHybridWidth; | |
180 | static const Double_t fHybridThBridgeThick; | |
181 | ||
182 | static const Double_t fLadWaferSep; | |
183 | static const Double_t fPinSuppWidth; | |
184 | static const Double_t fPinSuppHeight; | |
185 | static const Double_t fPinSuppRmax; | |
186 | static const Double_t fPinR; | |
187 | static const Double_t fPinSuppLength; | |
188 | static const Double_t fPinSuppThickness; | |
189 | static const Double_t fPinSuppConeAngle; | |
190 | static const Double_t fPinDXminOnSensor; | |
191 | static const Double_t fPinPinDDXOnSensor; | |
192 | static const Double_t fPinDYOnSensor; | |
193 | ||
194 | static const Double_t fCoolPipeInnerDiam; | |
195 | static const Double_t fCoolPipeOuterDiam; | |
196 | static const Double_t fCoolPipeSuppHeight; | |
197 | static const Double_t fCoolPipeSuppMaxLength; | |
198 | static const Double_t fCoolPipeSuppWidthExt; | |
199 | static const Double_t fCoolPipeSuppWidthIn; | |
200 | static const Double_t fCoolPipeSuppHoleDiam; | |
201 | static const Double_t fCoolPipeSuppFulWidth; | |
202 | static const Double_t fCoolPipeSuppTongW; | |
203 | static const Double_t fCoolPipeSuppAngle; | |
204 | static const Double_t fCoolPipeSuppSlitL; | |
205 | static const Double_t fCoolPipeSuppAxeDist; | |
206 | static const Double_t fLay3CoolPipeSuppH; | |
207 | static const Double_t fLay4CoolPipeSuppH; | |
208 | ||
209 | static const Double_t fBTBthick; | |
210 | static const Double_t fBTBlength; | |
211 | static const Double_t fBTBwidth; | |
212 | static const Double_t fBTBaxisAtoBottom; | |
213 | static const Double_t fBTBaxisAtoBase; | |
214 | static const Double_t fRadiusAminBTB; | |
215 | static const Double_t fRadiusBminBTB; | |
216 | static const Double_t fBTBHoleLength; | |
217 | static const Double_t fBTBHolewidth; | |
218 | static const Double_t fBTBHoleRefX; | |
219 | static const Double_t fBTBHoleRefY; | |
220 | ||
221 | Double_t fLay3LaddShortRadius; | |
222 | Double_t fLay3LaddLongRadius; | |
223 | ||
224 | Double_t fLay4LaddShortRadius; | |
225 | Double_t fLay4LaddLongRadius; | |
226 | ||
227 | Double_t fLay3sensorZPos[6]; | |
228 | Double_t fLay4sensorZPos[8]; | |
229 | ||
230 | ||
231 | ClassDef(AliITSv11GeometrySDD,1) // ITS v11 SDD geometry | |
232 | }; | |
233 | ||
234 | ||
235 | ||
236 | ||
237 | ||
238 | #endif |