Update of SSD calibration default DB. Update of SSD calibration classes. Ad hoc inter...
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySSD.h
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 TGeoMatrix;
12 class TVector3;
13 class TGeoArb8;
14 class TList;
15 class TGeoTube;
16 class TGeoHMatrix;
17 #include "AliITSv11Geometry.h"
18 class AliITSv11GeometrySSD: public AliITSv11Geometry {
19 public:
20   AliITSv11GeometrySSD();
21   AliITSv11GeometrySSD(const AliITSv11GeometrySSD &source);
22   AliITSv11GeometrySSD& operator=(const AliITSv11GeometrySSD &source);
23   virtual ~AliITSv11GeometrySSD(){};
24   /////////////////////////////////////////////////////////////////////////
25   // Public methods
26   /////////////////////////////////////////////////////////////////////////
27   const char*   GetSensitiveVolumeName() const {return fgkSSDSensitiveVolName;};
28   // Method returning the name of the sensitive part of detector
29   /////////////////////////////////////////////////////////////////////////
30   TGeoVolume* GetSSDSensorSupportShape(Double_t length,Double_t height,
31                                        Double_t width,Double_t* thickness);
32   // Method returning the name of the sensitive part of detector
33   /////////////////////////////////////////////////////////////////////////
34   TGeoVolume* GetSSDSensorSupport(Int_t VolumeKind,Int_t n);
35   // Method returning the SSD Sensor Support     
36   /////////////////////////////////////////////////////////////////////////
37   TGeoVolume* GetSSDSensorSupportAssembly(Int_t n);
38   // Method returning the SSD Sensor Support Assembly    
39   /////////////////////////////////////////////////////////////////////////
40   TGeoVolume* GetSSDSensor();
41   // Method returning the SSD Sensor     
42   /////////////////////////////////////////////////////////////////////////
43   TGeoVolume* GetSSDChipAssembly() const;
44   // Method returning the SSD Chip Assembly    
45   /////////////////////////////////////////////////////////////////////////
46   TGeoVolume* GetSSDChipCables(Double_t ssdchipcablesheigth,char* side);
47   // Method returning the SSD Chip Cables    
48   /////////////////////////////////////////////////////////////////////////
49   TGeoVolume* GetSSDChipCablesAssembly(Double_t ssdchipcablesheigth);
50   // Method returning the SSD Chip Cables Assembly   
51   /////////////////////////////////////////////////////////////////////////
52   TGeoVolume* GetSSDStiffenerAssembly();
53   // Method returning the SSD Stiffener Assembly    
54   /////////////////////////////////////////////////////////////////////////
55   TGeoVolume* GetSSDFlex(Double_t ssdflexradius, Double_t ssdflexheigth);
56   // Method returning the SSD Flex    
57   /////////////////////////////////////////////////////////////////////////
58   TGeoVolume* GetSSDEndFlex(Double_t ssdendflexlength,Double_t ssdflexheigth);
59   // Method returning the SSD End Flex    
60   /////////////////////////////////////////////////////////////////////////
61   TGeoVolume* GetSSDFlexAssembly();
62   // Method returning the SSD Flex Assembly    
63   /////////////////////////////////////////////////////////////////////////
64   TGeoVolume* GetSSDCoolingBlock();
65   // Method returning the SSD Cooling Block     
66   /////////////////////////////////////////////////////////////////////////
67   TGeoVolume* GetSSDCoolingBlockAssembly();
68   // Method returning the SSD Cooling Block Assembly    
69   /////////////////////////////////////////////////////////////////////////
70   TGeoVolume* GetSSDModule(Int_t ichipcablesheight);
71   // Method returning the SSD Module     
72   /////////////////////////////////////////////////////////////////////////
73   TGeoVolume* GetCarbonFiberJunction(Double_t width);
74   // Method returning the Carbon Fiber Junction     
75   /////////////////////////////////////////////////////////////////////////
76   TGeoVolume* GetCarbonFiberJunctionAssembly();
77   // Method returning the Carbon Fiber Junction Assembly    
78   /////////////////////////////////////////////////////////////////////////
79   TList* GetLadderCableSegment(Double_t ssdendladdercablelength);
80   // Method returning a List containing pointers to Ladder Cable Volumes    
81   /////////////////////////////////////////////////////////////////////////
82   TGeoVolume* GetLadderCable(Int_t n,Double_t ssdendladdercablelength);
83   // Method generating Ladder Cable Volumes Assemblies   
84   /////////////////////////////////////////////////////////////////////////
85   TGeoVolume* GetLadderCableAssembly(Int_t n,Double_t ssdendladdercablelength);
86   // Method generating Ladder Cable Volumes Assembly   
87   /////////////////////////////////////////////////////////////////////////
88   TList* GetLadderCableAssemblyList(Int_t n,Double_t ssdendladdercablelength);
89   // Method generating Ladder Cable List Assemblies   
90   /////////////////////////////////////////////////////////////////////////
91   TList* GetEndLadderCarbonFiberJunctionAssembly();
92   // Method generating the End Ladder Carbon Fiber Junction Assembly   
93   /////////////////////////////////////////////////////////////////////////
94   TGeoVolume* GetCarbonFiberSupport();
95   // Method generating the Carbon Fiber Support   
96   /////////////////////////////////////////////////////////////////////////
97   TGeoVolume* GetCarbonFiberLowerSupport(Int_t i=0,Bool_t endladder = false);
98   // Method generating the Carbon Fiber Lower Support   
99   /////////////////////////////////////////////////////////////////////////
100   TGeoVolume* GetCarbonFiberAssemblySupport();
101   // Method generating the Carbon Fiber Assembly Support   
102   /////////////////////////////////////////////////////////////////////////
103   TGeoVolume* GetCoolingTubeSupport();
104   // Method generating the Cooling Tube Support   
105   /////////////////////////////////////////////////////////////////////////
106   TGeoVolume* GetCoolingTubeSupportAssembly();
107   // Method generating the Cooling Tube Support Assembly  
108   /////////////////////////////////////////////////////////////////////////
109   TGeoVolume* GetCoolingTube() const;
110   // Method generating the Cooling Tube 
111   /////////////////////////////////////////////////////////////////////////
112   TGeoVolume* GetCoolingTubeAssembly();
113   // Method generating the Cooling Tube Assembly  
114   /////////////////////////////////////////////////////////////////////////
115   TGeoVolume* GetLadderSegment(Int_t iChipCablesHeight);
116   // Method generating the basic Ladder Segment element which will be replicated   
117   /////////////////////////////////////////////////////////////////////////
118   TList* GetEndLadderSegment();
119   // Method generating the Terminal Ladder Segment  
120   /////////////////////////////////////////////////////////////////////////
121   TGeoVolume* GetSSDMountingBlock();
122   // Method generating the Terminal Ladder Mounting Block  
123   /////////////////////////////////////////////////////////////////////////
124   TGeoVolume* GetLadder(Int_t iLayer);
125   // Method generating the Layer5 or Layer6 Ladder  
126   /////////////////////////////////////////////////////////////////////////
127   TGeoVolume* GetLayer(Int_t iLayer);
128   // Method generating the Layer5 or Layer6  
129   /////////////////////////////////////////////////////////////////////////
130   void Layer5(TGeoVolume* mothervolume);
131   // Method placing the Layer5 within mother volume  
132   /////////////////////////////////////////////////////////////////////////
133   void Layer6(TGeoVolume* mothervolume);
134   // Method placing the Layer6 within mother volume  
135   /////////////////////////////////////////////////////////////////////////
136   //Auxiliary methods for shapes building
137   /////////////////////////////////////////////////////////////////////////
138   TVector3* GetReflection(TVector3* vector,Double_t* param) const;
139   // Given an axis specified by param, it gives the reflection of the point
140   // respect to the axis
141   /////////////////////////////////////////////////////////////////////////
142   TGeoArb8* GetArbShape(TVector3* vertexpos[],Double_t* width, 
143                         Double_t height,char* shapename,Int_t isign = 1) const;
144   // Method generating an arb shape 
145   /////////////////////////////////////////////////////////////////////////
146   TGeoArb8* GetTriangleShape(TVector3* vertexpos[],Double_t height, char* shapename) const;
147   // Method generating a triangle shape 
148   /////////////////////////////////////////////////////////////////////////
149   TGeoArb8* GetTrapezoidShape(TVector3* vertexpos[],Double_t* width,    
150                               Double_t height,char* shapename) const;
151   // Method generating a trapezoid shape 
152   /////////////////////////////////////////////////////////////////////////
153   TGeoCombiTrans* AddTranslationToCombiTrans(TGeoCombiTrans* ct,Double_t dx,
154                                              Double_t dy,Double_t dz) const;
155   // add (dx,dy,dz) translation to a initial TGeoCombiTrans
156   /////////////////////////////////////////////////////////////////////////
157   //Auxiliary methods for material building
158   /////////////////////////////////////////////////////////////////////////
159   TGeoMedium* GetMedium(const char* mediumName);
160   // It returns the Medium
161   /////////////////////////////////////////////////////////////////////////
162   void CreateMaterials();
163   // it creates the matherials    
164 private:
165   /////////////////////////////////////////////////////////////////////////
166   // Layer5 (lengths are in mm and angles in degrees)
167   /////////////////////////////////////////////////////////////////////////
168   static const Double_t fgkSSDLay5LadderLength;    // Ladder Layer5 Length
169   static const Int_t fgkSSDLay5SensorsNumber;      // Ladder Layer5 Sensor Number
170   static const Int_t fgkSSDLay5LadderNumber;       // Ladder Layer5 Number
171   static const Double_t fgkSSDLay5RadiusMin;       // Ladder Layer5 Min Radius
172   static const Double_t fgkSSDLay5RadiusMax;       // Ladder Layer5 Max Radius
173   static const Double_t fgkLay5CenterITSPosition;  // ITS center position respect
174                                                    // to Ladder Layer5
175   /////////////////////////////////////////////////////////////////////////
176   // Layer6 (lengths are in mm and angles in degrees)
177   /////////////////////////////////////////////////////////////////////////
178   static const Double_t fgkSSDLay6LadderLength;    // Ladder Layer6 Length
179   static const Int_t fgkSSDLay6SensorsNumber;      // Ladder Layer6 Sensor Number
180   static const Int_t fgkSSDLay6LadderNumber;       // Ladder Layer6 Number
181   static const Double_t fgkSSDLay6RadiusMin;       // Ladder Layer6 Min Radius
182   static const Double_t fgkSSDLay6RadiusMax;       // Ladder Layer6 Max Radius 
183   static const Double_t fgkLay6CenterITSPosition;  // ITS center position respect
184                                                    // to Ladder Layer6
185   /////////////////////////////////////////////////////////////////////////
186   // SSD Chips and Hybrid
187   /////////////////////////////////////////////////////////////////////////
188   static const Int_t fgkSSDChipNumber;             // SSD Module Chip Number
189   static const Double_t fgkSSDChipLength;          // SSD Module Chip Length
190   static const Double_t fgkSSDChipWidth;           // SSD Module Chip Width
191   static const Double_t fgkSSDChipHeight;          // SSD Module Chip Height
192   static const Double_t fgkSSDChipSeparationLength;// SSD Module Distance between Chips
193   static const Double_t fgkSSDChipGlueLength;      // SSD Module Chip Glue Layer Length
194   static const Double_t fgkSSDChipGlueWidth;       // SSD Module Chip Glue Layer Width 
195   static const Double_t fgkSSDChipGlueHeight;      // SSD Module Chip Glue Layer Height
196   TGeoMedium* fSSDChipMedium;                    // SSD Module Chip Medium
197   TGeoMedium* fSSDChipGlueMedium;                // SSD Module Chip Glue Layer Medium 
198   /////////////////////////////////////////////////////////////////////////
199   // Stiffener Components
200   /////////////////////////////////////////////////////////////////////////
201   static const Double_t fgkSSDStiffenerLength;     // SSD Module Stiffener Length
202   static const Double_t fgkSSDStiffenerWidth;      // SSD Module Stiffener Width
203   static const Double_t fgkSSDStiffenerHeight;     // SSD Module Stiffener Height
204   static const Double_t fgkSSDStiffenerToChipDist; // SSD Module Stiffener position respect 
205                                                    // to sensor Edge
206   static const Double_t fgkSSDCapacitor0603Length; // SSD Stiffener Capacitor 0603 Length
207   static const Double_t fgkSSDCapacitor0603Width;  // SSD Stiffener Capacitor 0603 Width
208   static const Double_t fgkSSDCapacitor0603Height; // SSD Stiffener Capacitor 0603 Height
209   static const Double_t fgkSSDCapacitor1812Length; // SSD Stiffener Capacitor 1812 Length 
210   static const Double_t fgkSSDCapacitor1812Width;  // SSD Stiffener Capacitor 1812 Width
211   static const Double_t fgkSSDCapacitor1812Height; // SSD Stiffener Capacitor 1812 Height
212   static const Double_t fgkSSDWireLength;          // SSD Stiffener Wire Length
213   static const Double_t fgkSSDWireRadius;          // SSD Stiffener Wire Radius
214   static const Double_t fgkSSDConnectorPosition[2];// SSD Connector Position respect to Stiffener
215   static const Double_t fgkSSDConnectorSeparation; // SSD Connector separation distance
216   static const Double_t fgkSSDConnectorLength;     // SSD Stiffener Connector Length
217   static const Double_t fgkSSDConnectorWidth;      // SSD Stiffener Connector Width
218   static const Double_t fgkSSDConnectorHeight;     // SSD Stiffener Connector Height
219   TGeoMedium* fSSDStiffenerMedium;               // SSDStiffener Medium 
220   TGeoMedium* fSSDStiffenerConnectorMedium;      // SSD Stiffener Connector Medium 
221   TGeoMedium* fSSDStiffener0603CapacitorMedium;  // SSD Stiffener Capacitor 0603 Medium 
222   TGeoMedium* fSSDStiffener1812CapacitorMedium;  // SSD Stiffener Capacitor 1812 Medium 
223   TGeoMedium* fSSDStiffenerHybridWireMedium;     // SSD Stiffener Wire Medium  
224   /////////////////////////////////////////////////////////////////////////
225   // Flex
226   /////////////////////////////////////////////////////////////////////////
227   static const Double_t fgkSSDFlexFullLength;      // SSD Flex Full Length
228   static const Double_t fgkSSDFlexLength[4];       // SSD Flex Components Length
229   static const Double_t fgkSSDFlexWidth[2];        // SSD Flex Components Width
230   static const Double_t fgkSSDFlexHeight[2];       // SSD Flex Layers Heigth
231   static const Double_t fgkSSDFlexAngle;           // SSD Flex Angle 
232   static const Double_t fgkSSDFlexHoleLength;      // SSD Flex Hole Length
233   static const Double_t fgkSSDFlexHoleWidth;       // SSD Flex Hole Width
234   static const Double_t fgkSSDEndFlexCompLength[6];// SSD End-Flex Components Length
235   static const Double_t fgkSSDEndFlexCompWidth[3]; // SSD End-Flex Components Width
236   TGeoMedium* fSSDKaptonFlexMedium;              // SSD Flex Kapton Layer Medium    
237   TGeoMedium* fSSDAlTraceFlexMedium;             // SSD Flex Al Layer Medium 
238   /////////////////////////////////////////////////////////////////////////////////
239   // SSD Ladder Cable 
240   /////////////////////////////////////////////////////////////////////////////////
241   static const Double_t fgkSSDLadderCableWidth;    // SSD Ladder Cable Width
242   TGeoMedium* fSSDAlTraceLadderCableMedium;      // SSD Ladder Cable Al Layer Medium
243   TGeoMedium* fSSDKaptonLadderCableMedium;       // SSD Ladder Cable Kapton Layer Medium
244   /////////////////////////////////////////////////////////////////////////
245   // SSD Module Components 
246   /////////////////////////////////////////////////////////////////////////
247   static const Double_t fgkSSDModuleStiffenerPosition[2]; // SSD Module Stiffener position 
248                                                           // respect to Sensor Edge
249   static const Double_t fgkSSDModuleSensorSupportDistance;// SSD Module Sensor Support Position 
250                                                           // respect to Sensor Edge 
251   static const Double_t fgkSSDModuleCoolingBlockToSensor; // SSD Cooling Block Position 
252                                                           // respect to sensor
253   static const Int_t fgkSSDModuleCombiTransNumber = 7;    // Number of TGeoCombiTrans 
254                                                           // for positioning volumes in SSD Module 
255   void SetSSDModuleCombiTransMatrix(Double_t);            // Method for generating TGeoCombiTrans for 
256                                                           // for volume positioning in SSD Module
257   TGeoCombiTrans *fSSDModuleCombiTransMatrix[fgkSSDModuleCombiTransNumber]; // TGeoCombiTrans roto-trans
258                                                           // transformations for volume positioning
259   /////////////////////////////////////////////////////////////////////////
260   // Chip Cables
261   /////////////////////////////////////////////////////////////////////////
262   static const Double_t fgkSSDChipCablesLength[2]; // SSD Chip Cables Components Length
263   static const Double_t fgkSSDChipCablesHeight[4]; // SSD Chip Cables Components Height   
264   static const Double_t fgkSSDChipCablesWidth[3];  // SSD Chip Cables Components Width
265   TGeoMedium* fSSDKaptonChipCableMedium;         // SSD Chip Cables Kapton Layer Medium 
266   TGeoMedium* fSSDAlTraceChipCableMedium;        // SSD Chip Cables Al Layer Medium
267   /////////////////////////////////////////////////////////////////////////
268   // Cooling Block
269   /////////////////////////////////////////////////////////////////////////
270   static const Double_t fgkSSDCoolingBlockLength;       // SSD Cooling Block Length
271   static const Double_t fgkSSDCoolingBlockWidth;        // SSD Cooling Block Width   
272   static const Double_t fgkSSDCoolingBlockHeight[3];    // SSD Cooling Block Heiht
273   static const Double_t fgkSSDCoolingBlockHoleRadius[2];// SSD Cooling Block Hole Radius
274   static const Double_t fgkSSDCoolingBlockHoleLength[2];// SSD Cooling Block Hole Length 
275   static const Double_t fgkSSDCoolingBlockHoleCenter;   // SSD Cooling Block Hole Ceneter Position
276   static const Double_t fgkSSDCoolingBlockHoleHeight;   // SSD Cooling Block Hole Height
277   TGeoMedium* fSSDAlCoolBlockMedium;                  // SSD Cooling Block Al Medium
278   /////////////////////////////////////////////////////////////////////////
279   // SSD Sensor 
280   /////////////////////////////////////////////////////////////////////////
281   static const char* fgkSSDSensitiveVolName;           // SSD Name of the Sensitive Part of the Sensor
282   static const Double_t fgkSSDSensorLength;            // SSD Sensor Length              
283   static const Double_t fgkSSDSensorHeight;            // SSD Sensor Height
284   static const Double_t fgkSSDSensorWidth;             // SSD Sensor Width
285   static const Double_t fgkSSDSensorOverlap;           // SSD Sensor Beam Axis Overlap
286   static const Double_t fgkSSDSensorInsensitiveLength; // SSD Insensitive Part Length
287   static const Double_t fgkSSDSensorInsensitiveWidth;  // SSD Insensitive Part Width
288   TGeoMedium* fSSDSensorMedium;                      // SSD Sensor Medium  
289   /////////////////////////////////////////////////////////////////////////
290   // SSD Sensor Support 
291   /////////////////////////////////////////////////////////////////////////
292   static const Double_t fgkSSDSensorSideSupportLength;        // SSD Side Sensor Support Length
293   static const Double_t fgkSSDSensorSideSupportWidth;         // SSD Side Sensor Support Width
294   static const Double_t fgkSSDSensorSideSupportHeight[2];     // SSD Side Sensor Support Height
295   static const Double_t fgkSSDSensorSideSupportThickness[2];  // SSD Side Sensor Support Thickness 
296   static const Double_t fgkSSDSensorSideSupportPosition;      // SSD Side Sensor Support Position 
297   static const Double_t fgkSSDSensorCenterSupportLength;      // SSD Center Sensor Support Length
298   static const Double_t fgkSSDSensorCenterSupportWidth;       // SSD Center Sensor Support Width
299   static const Double_t fgkSSDSensorCenterSupportHeight[2];   // SSD Center Sensor Support Height
300   static const Double_t fgkSSDSensorCenterSupportThickness[2];// SSD Center Sensor Support Thickness
301   static const Double_t fgkSSDSensorCenterSupportPosition;    // SSD Center Sensor Support Position
302   static const Int_t fgkSSDSensorSupportCombiTransNumber = 3; // Number of TGeoCombiTrans 
303                                                               // for positioning volumes in Sensor Support Assembly       
304   void SetSSDSensorSupportCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
305                                                               // volume positioning in Sensor Support Assembly   
306   TGeoCombiTrans *fSSDSensorSupportCombiTransMatrix[fgkSSDSensorSupportCombiTransNumber]; // TGeoCombiTrans roto-trans
307                                                           // transformations for volume positioning in Sensor Support Assembly
308   TGeoMedium* fSSDSensorSupportMedium;                  // SSD Sensor Support Medium   
309   /////////////////////////////////////////////////////////////////////////
310   //Parameters for Carbon Fiber 
311   /////////////////////////////////////////////////////////////////////////
312   static const Double_t fgkCarbonFiberTriangleLength;            // Carbon Fiber Triangle Length 
313   static const Double_t fgkCarbonFiberTriangleAngle;             // Carbon Fiber Triangle Angle
314   static const Double_t fgkCarbonFiberSupportTopEdgeDist[2];     // Carbon Fiber Support Top Edge Components
315   static const Double_t fgkCarbonFiberSupportEdgeLength;         // Carbon Fiber Support Edge Lenght
316   static const Double_t fgkCarbonFiberSupportWidth;              // Carbon Fiber Support Edge Width
317   static const Double_t fgkCarbonFiberSupportXAxisLength;        // Carbon Fiber Support X Axis Lenght
318   static const Double_t fgkCarbonFiberSupportYAxisLength;        // Carbon Fiber Support Y Axis Lenght
319   static const Int_t fgkCarbonFiberAssemblyCombiTransNumber = 3; // Number of TGeoCombiTrans 
320                                                                  // for positioning volumes in Carbon Fiber Assembly 
321   void SetCarbonFiberAssemblyCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
322                                                                  // volume positioning in Carbon Fiber Assembly
323   TGeoCombiTrans *fCarbonFiberAssemblyCombiTransMatrix[fgkCarbonFiberAssemblyCombiTransNumber]; // TGeoCombiTrans roto-trans
324                                                                  // transformations for volume positioning in Carbon Fiber Assembly
325   TGeoMedium* fSSDCarbonFiberMedium;                           // SSD Carbon Fiber Medium 
326   //////////////////////////////////////////////////////////////////////////////
327   // Carbon Fiber Junction Parameters
328   //////////////////////////////////////////////////////////////////////////////
329   static const Double_t fgkCarbonFiberJunctionLength;            // Carbon Fiber Junction Length             
330   static const Double_t fgkCarbonFiberJunctionWidth;             // Carbon Fiber Junction Width 
331   static const Double_t fgkCarbonFiberJunctionEdge[2];           // Carbon Fiber Junction Edge Length  
332   static const Double_t fgkCarbonFiberJunctionAngle[2];          // Carbon Fiber Junction Angle 
333   static const Double_t fgkCarbonFiberJunctionToSensorSupport;   // Carbon Fiber Junction position respect to sensor
334   static const Int_t fgkCarbonFiberJunctionCombiTransNumber = 3; // Number of TGeoCombiTrans 
335                                                                  // for positioning volumes in Carbon Fiber Junction Assembly 
336   void SetCarbonFiberJunctionCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
337                                                                  // volume positioning in Carbon Fiber Junction Assembly
338   TGeoCombiTrans *fCarbonFiberJunctionCombiTransMatrix[fgkCarbonFiberJunctionCombiTransNumber];// TGeoCombiTrans roto-trans
339                                                                  // transformations for volume positioning in Carbon Fiber Junction Assembly
340   /////////////////////////////////////////////////////////////////////////
341   //Parameters for Carbon Fiber Lower Support (lengths are in mm)
342   /////////////////////////////////////////////////////////////////////////
343   static const Double_t fgkCarbonFiberLowerSupportWidth;            // Lower Support of Carbon Fiber Width
344   static const Double_t fgkCarbonFiberLowerSupportLowerLenght;      // Lower Support of Carbon Fiber Length
345   static const Double_t fgkCarbonFiberLowerSupportHeight;           // Lower Support of Carbon Fiber Height
346   static const Double_t fgkCarbonFiberLowerSupportTransverseWidth;  // Lower Support of Carbon Fiber Transverse separation
347   static const Double_t fgkCarbonFiberLowerSupportVolumeSeparation; // Distance between Lower Supports of Carbon Fiber 
348   static const Double_t fgkCarbonFiberLowerSupportVolumePosition[2];// Carbon fiber lower Support Position  
349   /////////////////////////////////////////////////////////////////////////
350   // End Ladder Carbon Fiber Lower Junction Parameters (lengths are in mm and angles in degrees)
351   /////////////////////////////////////////////////////////////////////////
352   static const Double_t fgkEndLadderCarbonFiberLowerJunctionLength[2];   // End Ladder Carbon Fiber Lower Up Support length 
353   static const Double_t fgkEndLadderCarbonFiberUpperJunctionLength[2];   // End Ladder Carbon Fiber Lower Down Support length 
354   static const Double_t fgkEndLadderMountingBlockPosition[2];            // End Ladder Mounting Block Position 
355   static const Int_t fgkEndLadderCarbonFiberJunctionCombiTransNumber = 3;// Number of TGeoCombiTrans 
356                                                                          // for positioning volumes in End LadderCarbon Fiber Junction Assembly 
357   void SetEndLadderCarbonFiberJunctionCombiTransMatrix(Int_t);           // Method for generating TGeoCombiTrans for 
358                                                                          // volume positioning in End Ladder Carbon Fiber Junction Assembly
359   TGeoCombiTrans *fEndLadderCarbonFiberJunctionCombiTransMatrix[fgkEndLadderCarbonFiberJunctionCombiTransNumber]; // TGeoCombiTrans roto-trans
360                                                                          // transformations for volume positioning in End Ladder 
361                                                                          // Carbon Fiber Junction Assembly
362   /////////////////////////////////////////////////////////////////////////
363   // Cooling Tube Support (lengths are in mm and angles in degrees)
364   /////////////////////////////////////////////////////////////////////////
365   static const Double_t fgkCoolingTubeSupportRmax;          // Cooling Tube Support Max Radius
366   static const Double_t fgkCoolingTubeSupportRmin;          // Cooling Tube Support Min Radius
367   static const Double_t fgkCoolingTubeSupportLength;        // Cooling Tube Support Length
368   static const Double_t fgkCoolingTubeSupportHeight;        // Cooling Tube Support Height
369   static const Double_t fgkCoolingTubeSupportWidth;         // Cooling Tube Support Width
370   static const Double_t fgkCoolingTubeSupportSeparation;    // Cooling Tube Support Separation
371   static const Double_t fgkCoolingTubeSupportToCarbonFiber; // Cooling Tube Support position respect to Carbon Fiber  
372   static const Int_t fgkCoolingTubeSupportCombiTransNumber = 2; // Number of TGeoCombiTrans 
373                                                             // for positioning volumes in Cooling Tube Support Assembly
374   void SetCoolingTubeSupportCombiTransMatrix();             // Method for generating TGeoCombiTrans for 
375                                                             // volume positioning in Cooling Tube Support Assembly
376   TGeoCombiTrans *fCoolingTubeSupportCombiTransMatrix[fgkCoolingTubeSupportCombiTransNumber]; // TGeoCombiTrans roto-trans
377                                                             // transformations for volume positioning in  
378                                                             // Cooling Tube Support Assembly
379   TGeoMedium* fSSDTubeHolderMedium;                       // Cooling Tube Support Medium
380   /////////////////////////////////////////////////////////////////////////////////
381   // Cooling Tube (lengths are in mm and angles in degrees)
382   /////////////////////////////////////////////////////////////////////////////////
383   static const Double_t fgkCoolingTubeRmax;       // Cooling Tube Max Radius 
384   static const Double_t fgkCoolingTubeRmin;       // Cooling Tube Min Radius
385   static const Double_t fgkCoolingTubeLength;     // Cooling Tube Length  
386   static const Double_t fgkCoolingTubeSeparation; // Cooling Tube Separation
387   static const Int_t    fgkCoolingTubeCombiTransNumber = 2; // Number of TGeoCombiTrans 
388                                                             // for positioning volumes in Cooling Tube Assembly
389   void SetCoolingTubeCombiTransMatrix();                    // Method for generating TGeoCombiTrans for 
390                                                             // volume positioning in Cooling Tube Assembly
391   TGeoCombiTrans *fCoolingTubeTransMatrix[fgkCoolingTubeCombiTransNumber];// TGeoCombiTrans roto-trans
392                                                             // transformations for volume positioning Cooling Tube Assembly
393   TGeoMedium* fSSDCoolingTubeWater;           // Medium for Inner Part of Cooling Tube
394   TGeoMedium* fSSDCoolingTubePhynox;          // Medium for Cooling Tube 
395   /////////////////////////////////////////////////////////////////////////
396   // SSD Mounting Block Parameters (lengths are in mm and angles in degrees)
397   /////////////////////////////////////////////////////////////////////////
398   static const Double_t fgkSSDMountingBlockLength[3];  // SSD Mounting Block Components Lengths
399   static const Double_t fgkSSDMountingBlockHeight[4];  // SSD Mounting Block Components Heights
400   static const Double_t fgkSSDMountingBlockWidth;      // SSD Mounting Block Width
401   static const Double_t fgkSSDMountingBlockHoleTrapezoidAngle;  // SSD Mounting Block Hole Trapezoid Angle
402   static const Double_t fgkSSDMountingBlockHoleTrapezoidHeight; // SSD Mounting Block Hole Trapezoid Height
403   static const Double_t fgkSSDMountingBlockHoleTrapezoidUpBasis;// SSD Mounting Block Hole Trapezoid Up Basis Length
404   static const Double_t fgkSSDMountingBlockHoleTubeLength[2];   // SSD Mounting Block Hole Tube Lengths   
405   static const Double_t fgkSSDMountingBlockHoleTubeWidth[2];    // SSD Mounting Block Hole Tube Width   
406   static const Double_t fgkSSDMountingBlockHoleRadius;          // SSD Mounting Block Hole radius  
407   static const Double_t fgkSSDMountingBlockScrewHoleEdge;       // SSD Mounting Block Screw Hole Edge  
408   static const Double_t fgkSSDMountingBlockScrewHoleHeigth;     // SSD Mounting Block Screw Hole Height  
409   static const Double_t fgkSSDMountingBlockScrewHoleRadius[2];  // SSD Mounting Block Screw Hole Radii
410   TGeoMedium* fSSDMountingBlockMedium;                        // Medium for SSD Mounting Block  
411   /////////////////////////////////////////////////////////////////////////
412   // LadderSegment 
413   /////////////////////////////////////////////////////////////////////////
414   static const Int_t fgkLadderSegmentCombiTransNumber = 5; // Number of TGeoCombiTrans 
415                                                            // for positioning volumes in Ladder Segment    
416   void SetLadderSegmentCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
417                                                            // volume positioning in Ladder Segment 
418   TGeoCombiTrans *fLadderSegmentCombiTransMatrix[fgkLadderSegmentCombiTransNumber]; // TGeoCombiTrans roto-trans
419                                                             // transformations for volume positioning in  
420                                                             // in Ladder Segment
421   /////////////////////////////////////////////////////////////////////////
422   // End LadderSegment 
423   /////////////////////////////////////////////////////////////////////////
424   static const Int_t fgkEndLadderSegmentCombiTransNumber = 4; // Number of TGeoCombiTrans 
425                                                            // for positioning volumes in End Ladder Segment    
426   void SetEndLadderSegmentCombiTransMatrix(Int_t);         // Method for generating TGeoCombiTrans for 
427                                                            // volume positioning in End Ladder Segment  
428   TGeoCombiTrans *fEndLadderSegmentCombiTransMatrix[fgkEndLadderSegmentCombiTransNumber]; // TGeoCombiTrans roto-trans
429                                                             // transformations for volume positioning in  
430                                                             // in End Ladder Segment
431   /////////////////////////////////////////////////////////////////////////
432   // LadderCables 
433   /////////////////////////////////////////////////////////////////////////
434   static const Int_t fgkLadderCableCombiTransNumber = 4; // Number of TGeoCombiTrans 
435                                                          // for positioning Ladder Cable volumes  
436   void SetLadderCableCombiTransMatrix(Int_t iLayer);     // Method for generating TGeoCombiTrans 
437                                                          // for positioning Ladder Cables volumes
438   TGeoCombiTrans *fLadderCableCombiTransMatrix[fgkLadderCableCombiTransNumber]; // TGeoCombiTrans for positioning
439                                                          // Ladder Cables volumes
440   /////////////////////////////////////////////////////////////////////////
441   // Mother Volume 
442   /////////////////////////////////////////////////////////////////////////
443   TGeoVolume *fMotherVol;                                    // Mother volume for ITS Layer5 and Layer6   
444   TGeoVolume* GetMotherVolume() const { return fMotherVol;}; // Method returning Mother Volume
445   /////////////////////////////////////////////////////////////////////////
446   // Color Display 
447   /////////////////////////////////////////////////////////////////////////
448   Int_t fColorCarbonFiber;    //  display colors
449   Int_t fColorRyton;          //  ===
450   Int_t fColorPhynox;         //  ===
451   Int_t fColorSilicon;        //  ===
452   Int_t fColorAl;             //  ===
453   Int_t fColorKapton;         //  ===
454   Int_t fColorPolyhamide;     //  ===
455   Int_t fColorStiffener;      //  ===
456   Int_t fColorEpoxy;          //  ===
457   ClassDef(AliITSv11GeometrySSD, 2)     // ITS v11 SSD geometry
458 };
459 #endif