]>
Commit | Line | Data |
---|---|---|
d7599219 | 1 | //************************************************************************* |
2 | // class AliITSv11GeometrySSD | |
3 | // Enrico Cattaruzza ecattar@ts.infn.it | |
4 | //************************************************************************* | |
5 | #ifndef ALIITSV11GEOMETRYSSD_H | |
6 | #define ALIITSV11GEOMETRYSSD_H | |
7 | class TGeoVolume; | |
8 | class TGeoCombiTrans; | |
9 | class TGeoMedium; | |
10 | class TGeoCompositeShape; | |
11 | class TVector3; | |
12 | class TGeoArb8; | |
13 | class TList; | |
14 | class TGeoTube; | |
15 | class TGeoHMatrix; | |
16 | class AliITSv11GeometrySSD{ | |
17 | public: | |
18 | AliITSv11GeometrySSD(); | |
19 | virtual ~AliITSv11GeometrySSD(){}; | |
20 | ///////////////////////////////////////////////////////////////////////// | |
21 | // Public methods | |
22 | ///////////////////////////////////////////////////////////////////////// | |
23 | TGeoMedium *GetMedium(char*); // to be interfaced with AliRoot | |
24 | const char* GetSensitiveVolumeName() const {return fgkSSDSensitiveVolName;}; | |
25 | TGeoVolume* GetSSDSensorSupportShape(Double_t,Double_t,Double_t,Double_t*); | |
26 | TGeoVolume* GetSSDSensorSupport(Int_t, Int_t); | |
27 | TGeoVolume* GetSSDSensorSupportAssembly(Int_t); | |
28 | TGeoVolume* GetSSDSensor(); | |
29 | TGeoVolume* GetSSDChipAssembly(); | |
30 | TGeoVolume* GetSSDChipCables(Double_t,char*); | |
31 | TGeoVolume* GetSSDChipCablesAssembly(Double_t); | |
32 | TGeoVolume* GetSSDStiffenerAssembly(); | |
33 | TGeoVolume* GetSSDFlex(Double_t,Double_t); | |
34 | TGeoVolume* GetSSDEndFlex(Double_t,Double_t); | |
35 | TGeoVolume* GetSSDFlexAssembly(); | |
36 | TGeoVolume* GetSSDCoolingBlock(); | |
37 | TGeoVolume* GetSSDCoolingBlockAssembly(); | |
38 | TGeoVolume* GetSSDModule(Int_t); | |
39 | TGeoVolume* GetCarbonFiberJunction(Double_t); | |
40 | TGeoVolume* GetCarbonFiberJunctionAssembly(); | |
41 | TList* GetLadderCableSegment(Double_t); | |
42 | TGeoVolume* GetLadderCable(Int_t n,Double_t); | |
43 | TGeoVolume* GetLadderCableAssembly(Int_t n,Double_t); | |
44 | TList* GetLadderCableAssemblyList(Int_t n,Double_t); | |
45 | TList* GetEndLadderCarbonFiberJunctionAssembly(); | |
46 | TGeoVolume* GetCarbonFiberSupport(); | |
47 | TGeoVolume* GetCarbonFiberLowerSupport(Int_t i=0, Bool_t EndLadder = false); | |
48 | TGeoVolume* GetCarbonFiberAssemblySupport(); | |
49 | TGeoVolume* GetCoolingTubeSupport(); | |
50 | TGeoVolume* GetCoolingTubeSupportAssembly(); | |
51 | TGeoVolume* GetCoolingTube(); | |
52 | TGeoVolume* GetCoolingTubeAssembly(); | |
53 | TGeoVolume* GetLadderSegment(Int_t); | |
54 | TList* GetEndLadderSegment(); | |
55 | TGeoVolume* GetSSDMountingBlock(); | |
56 | TGeoVolume* GetLadder(Int_t); | |
57 | TGeoVolume* GetLayer(Int_t); | |
58 | void Layer5(TGeoVolume*); | |
59 | void Layer6(TGeoVolume*); | |
60 | ///////////////////////////////////////////////////////////////////////// | |
61 | //Auxiliary methods for shapes building | |
62 | ///////////////////////////////////////////////////////////////////////// | |
63 | TVector3* GetReflection(TVector3*,Double_t*); | |
64 | TGeoArb8* GetArbShape(TVector3* [],Double_t*,Double_t,char*,Int_t isign = 1); | |
65 | TGeoArb8* GetTriangleShape(TVector3* [],Double_t,char*); | |
66 | TGeoArb8* GetTrapezoidShape(TVector3* [],Double_t*,Double_t,char*); | |
67 | TGeoCombiTrans* AddTranslationToCombiTrans(TGeoCombiTrans*,Double_t, | |
68 | Double_t,Double_t) const; | |
69 | ///////////////////////////////////////////////////////////////////////// | |
70 | //Auxiliary methods for material building | |
71 | ///////////////////////////////////////////////////////////////////////// | |
72 | TGeoMedium* AliITSv11GeometrySSD::GetMedium(const char* mediumName); | |
73 | void CreateMaterials(); | |
74 | private: | |
75 | ///////////////////////////////////////////////////////////////////////// | |
76 | // Layer5 (lengths are in mm and angles in degrees) | |
77 | ///////////////////////////////////////////////////////////////////////// | |
78 | static const Double_t fgkSSDLay5LadderLength; | |
79 | static const Int_t fgkSSDLay5SensorsNumber; | |
80 | static const Int_t fgkSSDLay5LadderNumber; | |
81 | static const Double_t fgkSSDLay5RadiusMin; | |
82 | static const Double_t fgkSSDLay5RadiusMax; | |
83 | static const Double_t fgkLay5CenterITSPosition; | |
84 | ///////////////////////////////////////////////////////////////////////// | |
85 | // Layer6 (lengths are in mm and angles in degrees) | |
86 | ///////////////////////////////////////////////////////////////////////// | |
87 | static const Double_t fgkSSDLay6LadderLength; //It is not used explicitely in the simulation | |
88 | static const Int_t fgkSSDLay6SensorsNumber; | |
89 | static const Int_t fgkSSDLay6LadderNumber; | |
90 | static const Double_t fgkSSDLay6RadiusMin; | |
91 | static const Double_t fgkSSDLay6RadiusMax; | |
92 | static const Double_t fgkLay6CenterITSPosition; | |
93 | ///////////////////////////////////////////////////////////////////////// | |
94 | // SSD Chips and Hybrid | |
95 | ///////////////////////////////////////////////////////////////////////// | |
96 | static const Int_t fgkSSDChipNumber; | |
97 | static const Double_t fgkSSDChipLength; | |
98 | static const Double_t fgkSSDChipWidth; | |
99 | static const Double_t fgkSSDChipHeight; | |
100 | static const Double_t fgkSSDChipSeparationLength; | |
101 | static const Double_t fgkSSDChipGlueLength; | |
102 | static const Double_t fgkSSDChipGlueWidth; | |
103 | static const Double_t fgkSSDChipGlueHeight; | |
104 | TGeoMedium* fgkSSDChipMedium; | |
105 | TGeoMedium* fgkSSDChipGlueMedium; | |
106 | ///////////////////////////////////////////////////////////////////////// | |
107 | // Stiffener | |
108 | ///////////////////////////////////////////////////////////////////////// | |
109 | static const Double_t fgkSSDStiffenerLength; | |
110 | static const Double_t fgkSSDStiffenerWidth; | |
111 | static const Double_t fgkSSDStiffenerHeight; | |
112 | static const Double_t fgkSSDStiffenerToChipDist; | |
113 | static const Double_t fgkSSDCapacitor0603Length; | |
114 | static const Double_t fgkSSDCapacitor0603Width; | |
115 | static const Double_t fgkSSDCapacitor0603Height; | |
116 | static const Double_t fgkSSDCapacitor1812Length; | |
117 | static const Double_t fgkSSDCapacitor1812Width; | |
118 | static const Double_t fgkSSDCapacitor1812Height; | |
119 | static const Double_t fgkSSDWireLength; | |
120 | static const Double_t fgkSSDWireRadius; | |
121 | static const Double_t fgkSSDConnectorPosition[2]; | |
122 | static const Double_t fgkSSDConnectorSeparation; | |
123 | static const Double_t fgkSSDConnectorLength; | |
124 | static const Double_t fgkSSDConnectorWidth; | |
125 | static const Double_t fgkSSDConnectorHeight; | |
126 | TGeoMedium* fgkSSDStiffenerMedium; | |
127 | TGeoMedium* fgkSSDStiffenerConnectorMedium; | |
128 | TGeoMedium* fgkSSDStiffener0603CapacitorMedium; | |
129 | TGeoMedium* fgkSSDStiffener1812CapacitorMedium; | |
130 | TGeoMedium* fgkSSDStiffenerHybridWireMedium; | |
131 | ///////////////////////////////////////////////////////////////////////// | |
132 | // Flex | |
133 | ///////////////////////////////////////////////////////////////////////// | |
134 | static const Double_t fgkSSDFlexFullLength; | |
135 | static const Double_t fgkSSDFlexLength[4]; | |
136 | static const Double_t fgkSSDFlexWidth[2]; | |
137 | static const Double_t fgkSSDFlexHeight[2]; | |
138 | static const Double_t fgkSSDFlexAngle; | |
139 | static const Double_t fgkSSDFlexHoleLength; | |
140 | static const Double_t fgkSSDFlexHoleWidth; | |
141 | static const Double_t fgkSSDEndFlexCompLength[6]; | |
142 | static const Double_t fgkSSDEndFlexCompWidth[3]; | |
143 | TGeoMedium* fgkSSDKaptonFlexMedium; | |
144 | TGeoMedium* fgkSSDAlTraceFlexMedium; | |
145 | ///////////////////////////////////////////////////////////////////////////////// | |
146 | // SSD Ladder Cable | |
147 | ///////////////////////////////////////////////////////////////////////////////// | |
148 | static const Double_t fgkSSDEndLadderCableLength; | |
149 | static const Double_t fgkSSDLadderCableWidth; | |
150 | TGeoMedium* fgkSSDAlTraceLadderCableMedium; | |
151 | TGeoMedium* fgkSSDKaptonLadderCableMedium; | |
152 | ///////////////////////////////////////////////////////////////////////// | |
153 | // SSD Module | |
154 | ///////////////////////////////////////////////////////////////////////// | |
155 | static const Double_t fgkSSDModuleStiffenerPosition[2]; | |
156 | static const Double_t fgkSSDModuleSensorSupportDistance; | |
157 | static const Double_t fgkSSDModuleCoolingBlockToSensor; | |
158 | static const Int_t fgkSSDModuleCombiTransNumber = 7; | |
159 | void SetSSDModuleCombiTransMatrix(Double_t); | |
160 | TGeoCombiTrans *SSDModuleCombiTransMatrix[fgkSSDModuleCombiTransNumber]; | |
161 | ///////////////////////////////////////////////////////////////////////// | |
162 | // Chip Cables | |
163 | ///////////////////////////////////////////////////////////////////////// | |
164 | static const Double_t fgkSSDChipCablesLength[2]; | |
165 | static const Double_t fgkSSDChipCablesHeight[4]; | |
166 | static const Double_t fgkSSDChipCablesWidth[3]; | |
167 | TGeoMedium* fgkSSDKaptonChipCableMedium; | |
168 | TGeoMedium* fgkSSDAlTraceChipCableMedium; | |
169 | ///////////////////////////////////////////////////////////////////////// | |
170 | // Cooling Block | |
171 | ///////////////////////////////////////////////////////////////////////// | |
172 | static const Double_t fgkSSDCoolingBlockLength; | |
173 | static const Double_t fgkSSDCoolingBlockWidth; | |
174 | static const Double_t fgkSSDCoolingBlockHeight[3]; | |
175 | static const Double_t fgkSSDCoolingBlockHoleRadius[2]; | |
176 | static const Double_t fgkSSDCoolingBlockHoleLength[2]; | |
177 | static const Double_t fgkSSDCoolingBlockHoleCenter; | |
178 | static const Double_t fgkSSDCoolingBlockHoleHeight; | |
179 | TGeoMedium* fgkSSDAlCoolBlockMedium; | |
180 | ///////////////////////////////////////////////////////////////////////// | |
181 | // SSD Sensor | |
182 | ///////////////////////////////////////////////////////////////////////// | |
183 | static const char* fgkSSDSensitiveVolName; | |
184 | static const Double_t fgkSSDSensorLength; | |
185 | static const Double_t fgkSSDSensorHeight; | |
186 | static const Double_t fgkSSDSensorWidth; | |
187 | static const Double_t fgkSSDSensorOverlap; | |
188 | static const Double_t fgkSSDSensorInsensitiveLength; | |
189 | static const Double_t fgkSSDSensorInsensitiveWidth; | |
190 | TGeoMedium* fgkSSDSensorMedium; | |
191 | ///////////////////////////////////////////////////////////////////////// | |
192 | // SSD Sensor Support | |
193 | ///////////////////////////////////////////////////////////////////////// | |
194 | static const Int_t fgkSSDSensorSupportCombiTransNumber = 3; | |
195 | static const Double_t fgkSSDSensorSideSupportLength; | |
196 | static const Double_t fgkSSDSensorSideSupportWidth; | |
197 | static const Double_t fgkSSDSensorSideSupportHeight[2]; | |
198 | static const Double_t fgkSSDSensorSideSupportThickness[2]; | |
199 | static const Double_t fgkSSDSensorSideSupportPosition; | |
200 | static const Double_t fgkSSDSensorCenterSupportLength; | |
201 | static const Double_t fgkSSDSensorCenterSupportWidth; | |
202 | static const Double_t fgkSSDSensorCenterSupportHeight[2]; | |
203 | static const Double_t fgkSSDSensorCenterSupportThickness[2]; | |
204 | static const Double_t fgkSSDSensorCenterSupportPosition; | |
205 | void SetSSDSensorSupportCombiTransMatrix(); | |
206 | TGeoCombiTrans *SSDSensorSupportCombiTransMatrix[fgkSSDSensorSupportCombiTransNumber]; | |
207 | TGeoMedium* fgkSSDSensorSupportMedium; | |
208 | ///////////////////////////////////////////////////////////////////////// | |
209 | //Parameters for Carbon Fiber | |
210 | ///////////////////////////////////////////////////////////////////////// | |
211 | static const Int_t fgkCarbonFiberAssemblyCombiTransNumber = 3; | |
212 | static const Double_t fgkCarbonFiberTriangleLength; | |
213 | static const Double_t fgkCarbonFiberTriangleAngle; | |
214 | static const Double_t fgkCarbonFiberSupportTopEdgeDist[2]; | |
215 | static const Double_t fgkCarbonFiberSupportEdgeLength; | |
216 | static const Double_t fgkCarbonFiberSupportWidth; | |
217 | static const Double_t fgkCarbonFiberSupportXAxisLength; | |
218 | static const Double_t fgkCarbonFiberSupportYAxisLength; | |
219 | void SetCarbonFiberAssemblyCombiTransMatrix(); | |
220 | TGeoCombiTrans *CarbonFiberAssemblyCombiTransMatrix[fgkCarbonFiberAssemblyCombiTransNumber]; | |
221 | TGeoMedium* fgkSSDCarbonFiberMedium; | |
222 | ////////////////////////////////////////////////////////////////////////////// | |
223 | // Carbon Fiber Junction Parameters | |
224 | ////////////////////////////////////////////////////////////////////////////// | |
225 | static const Int_t fgkCarbonFiberJunctionCombiTransNumber = 3; | |
226 | static const Double_t fgkCarbonFiberJunctionLength; | |
227 | static const Double_t fgkCarbonFiberJunctionWidth; | |
228 | static const Double_t fgkCarbonFiberJunctionEdge[2]; | |
229 | static const Double_t fgkCarbonFiberJunctionAngle[2]; | |
230 | static const Double_t fgkCarbonFiberJunctionToSensorSupport; | |
231 | void SetCarbonFiberJunctionCombiTransMatrix(); | |
232 | TGeoCombiTrans *CarbonFiberJunctionCombiTransMatrix[fgkCarbonFiberJunctionCombiTransNumber]; | |
233 | ///////////////////////////////////////////////////////////////////////// | |
234 | //Parameters for Carbon Fiber Lower Support (lengths are in mm) | |
235 | ///////////////////////////////////////////////////////////////////////// | |
236 | static const Double_t fgkCarbonFiberLowerSupportWidth; | |
237 | static const Double_t fgkCarbonFiberLowerSupportLowerLenght; | |
238 | static const Double_t fgkCarbonFiberLowerSupportHeight; | |
239 | static const Double_t fgkCarbonFiberLowerSupportTransverseWidth; | |
240 | static const Double_t fgkCarbonFiberLowerSupportVolumeSeparation; | |
241 | static const Double_t fgkCarbonFiberLowerSupportVolumePosition[2]; | |
242 | ///////////////////////////////////////////////////////////////////////// | |
243 | // End Ladder Carbon Fiber Junction Parameters (lengths are in mm and angles in degrees) | |
244 | ///////////////////////////////////////////////////////////////////////// | |
245 | static const Int_t fgkEndLadderCarbonFiberJunctionCombiTransNumber = 3; | |
246 | static const Double_t fgkEndLadderCarbonFiberLowerJunctionLength[2]; | |
247 | static const Double_t fgkEndLadderCarbonFiberUpperJunctionLength[2]; | |
248 | static const Double_t fgkEndLadderMountingBlockPosition[2]; | |
249 | void SetEndLadderCarbonFiberJunctionCombiTransMatrix(Int_t); | |
250 | TGeoCombiTrans *EndLadderCarbonFiberJunctionCombiTransMatrix[fgkEndLadderCarbonFiberJunctionCombiTransNumber]; | |
251 | ///////////////////////////////////////////////////////////////////////// | |
252 | // Cooling Tube Support (lengths are in mm and angles in degrees) | |
253 | ///////////////////////////////////////////////////////////////////////// | |
254 | static const Int_t fgkCoolingTubeSupportCombiTransNumber = 2; | |
255 | static const Double_t fgkCoolingTubeSupportRmax; | |
256 | static const Double_t fgkCoolingTubeSupportRmin; | |
257 | static const Double_t fgkCoolingTubeSupportLength; | |
258 | static const Double_t fgkCoolingTubeSupportHeight; | |
259 | static const Double_t fgkCoolingTubeSupportWidth; | |
260 | static const Double_t fgkCoolingTubeSupportSeparation; | |
261 | static const Double_t fgkCoolingTubeSupportToCarbonFiber; | |
262 | void SetCoolingTubeSupportCombiTransMatrix(); | |
263 | TGeoCombiTrans *CoolingTubeSupportCombiTransMatrix[fgkCoolingTubeSupportCombiTransNumber]; | |
264 | TGeoMedium* fgkSSDTubeHolderMedium; | |
265 | ///////////////////////////////////////////////////////////////////////////////// | |
266 | // Cooling Tube (lengths are in mm and angles in degrees) | |
267 | ///////////////////////////////////////////////////////////////////////////////// | |
268 | static const Int_t fgkCoolingTubeCombiTransNumber = 2; | |
269 | static const Double_t fgkCoolingTubeRmax; | |
270 | static const Double_t fgkCoolingTubeRmin; | |
271 | static const Double_t fgkCoolingTubeLength; | |
272 | static const Double_t fgkCoolingTubeSeparation; | |
273 | void SetCoolingTubeCombiTransMatrix(); | |
274 | TGeoCombiTrans *CoolingTubeTransMatrix[fgkCoolingTubeCombiTransNumber]; | |
275 | TGeoMedium* fgkSSDCoolingTubeWater; | |
276 | TGeoMedium* fgkSSDCoolingTubePhynox; | |
277 | ///////////////////////////////////////////////////////////////////////// | |
278 | // SSD Mounting Block Parameters (lengths are in mm and angles in degrees) | |
279 | ///////////////////////////////////////////////////////////////////////// | |
280 | static const Double_t fgkSSDMountingBlockLength[3]; | |
281 | static const Double_t fgkSSDMountingBlockHeight[4]; | |
282 | static const Double_t fgkSSDMountingBlockWidth; | |
283 | static const Double_t fgkSSDMountingBlockHoleTrapezoidAngle; | |
284 | static const Double_t fgkSSDMountingBlockHoleTrapezoidHeight; | |
285 | static const Double_t fgkSSDMountingBlockHoleTrapezoidUpBasis; | |
286 | static const Double_t fgkSSDMountingBlockHoleTubeLength[2]; | |
287 | static const Double_t fgkSSDMountingBlockHoleTubeWidth[2]; | |
288 | static const Double_t fgkSSDMountingBlockHoleRadius; | |
289 | static const Double_t fgkSSDMountingBlockScrewHoleEdge; | |
290 | static const Double_t fgkSSDMountingBlockScrewHoleHeigth; | |
291 | static const Double_t fgkSSDMountingBlockScrewHoleRadius[2]; | |
292 | TGeoMedium* fgkSSDMountingBlockMedium; | |
293 | ///////////////////////////////////////////////////////////////////////// | |
294 | // LadderSegment | |
295 | ///////////////////////////////////////////////////////////////////////// | |
296 | static const Int_t fgkLadderSegmentCombiTransNumber = 5; | |
297 | void SetLadderSegmentCombiTransMatrix(); | |
298 | TGeoCombiTrans *LadderSegmentCombiTransMatrix[fgkLadderSegmentCombiTransNumber]; | |
299 | static const Int_t fgkEndLadderSegmentCombiTransNumber = 4; | |
300 | void SetEndLadderSegmentCombiTransMatrix(Int_t); | |
301 | TGeoCombiTrans *EndLadderSegmentCombiTransMatrix[fgkEndLadderSegmentCombiTransNumber]; | |
302 | ///////////////////////////////////////////////////////////////////////// | |
303 | // LadderCables | |
304 | ///////////////////////////////////////////////////////////////////////// | |
305 | void SetLadderCableCombiTransMatrix(Int_t); | |
306 | TGeoCombiTrans *LadderCableCombiTransMatrix[4]; | |
307 | ///////////////////////////////////////////////////////////////////////// | |
308 | // Mother Volume | |
309 | ///////////////////////////////////////////////////////////////////////// | |
310 | TGeoVolume *fMotherVol; | |
311 | TGeoVolume* GetMotherVolume() const { return fMotherVol;}; | |
312 | ///////////////////////////////////////////////////////////////////////// | |
313 | // Color Display | |
314 | ///////////////////////////////////////////////////////////////////////// | |
315 | Int_t fColorCarbonFiber; | |
316 | Int_t fColorRyton; | |
317 | Int_t fColorPhynox; | |
318 | Int_t fColorSilicon; | |
319 | Int_t fColorAl; | |
320 | Int_t fColorKapton; | |
321 | Int_t fColorPolyhamide; | |
322 | Int_t fColorStiffener; | |
323 | Int_t fColorEpoxy; | |
324 | }; | |
325 | #endif | |
326 |