coding conventions and documentation
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySSD.h
CommitLineData
d7599219 1//*************************************************************************
2// class AliITSv11GeometrySSD
3// Enrico Cattaruzza ecattar@ts.infn.it
4//*************************************************************************
5#ifndef ALIITSV11GEOMETRYSSD_H
6#define ALIITSV11GEOMETRYSSD_H
7class TGeoVolume;
8class TGeoCombiTrans;
9class TGeoMedium;
10class TGeoCompositeShape;
11class TVector3;
12class TGeoArb8;
13class TList;
14class TGeoTube;
15class TGeoHMatrix;
16class AliITSv11GeometrySSD{
17public:
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();
74private:
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