babbb2b9e3b326e804bd9ef438ebd6a60c984892
[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 class TGeoTranslation;
18 class TGeoXtru;
19 class TGeoVolumeAssembly;
20 #include "AliITSv11Geometry.h"
21 class AliITSv11GeometrySSD: public AliITSv11Geometry {
22 public:
23   AliITSv11GeometrySSD();
24   AliITSv11GeometrySSD(const AliITSv11GeometrySSD &source);
25   AliITSv11GeometrySSD& operator=(const AliITSv11GeometrySSD &source);
26   virtual ~AliITSv11GeometrySSD(){};
27   /////////////////////////////////////////////////////////////////////////
28   // Public methods
29   /////////////////////////////////////////////////////////////////////////
30   TGeoMedium* GetMedium(const char* mediumName);
31   // It returns the Medium
32   const char*   GetSenstiveVolumeName5() const {return fgSDDsensitiveVolName5;};
33   // it returns the Sensitive Volume of Layer 5
34   const char*   GetSenstiveVolumeName6() const {return fgSDDsensitiveVolName6;};
35   // it returns the Sensitive Volume of Layer 6
36   TGeoVolumeAssembly* GetLadderSegment(Int_t i){return fladdersegment[i];}; // Get Ladder Segment
37   TGeoVolumeAssembly* GetEndLadderSegment(Int_t i){return fendladdersegment[i];}; // Get End Ladder Segment 
38   TGeoVolume* GetLadder(Int_t i) {return fladder[i];}; // Get Ladder
39   TGeoVolume* GetLayer(Int_t i)const {return i==5? fSSDLayer5 : fSSDLayer6;}; // Get Layer
40   void SetLadderSegment();                              // Set Ladder Elementary Segment 
41   void SetEndLadderSegment();                   // Set End Ladder Segment
42   void SetLadder();                                             // Set Ladder
43   void SetLayer();                                              // Set Layer
44   void Layer5(TGeoVolume* moth);        // Setting Layer 5 into mother volume
45   void Layer6(TGeoVolume* moth);        // Setting Layer 6 into mother volume
46 private:
47   /////////////////////////////////////////////////////////////////////////////////
48   // Names of the Sensitive Volumes of Layer 5 and Layer 6
49   /////////////////////////////////////////////////////////////////////////////////
50   static const char* fgSDDsensitiveVolName5;       // sens. vol. name for lay. 5
51   static const char* fgSDDsensitiveVolName6;       // sens. vol. name for lay. 6
52   /////////////////////////////////////////////////////////////////////////
53   // Layer5 (lengths are in mm and angles in degrees)
54   /////////////////////////////////////////////////////////////////////////
55   static const Double_t fgkSSDLay5LadderLength;    // Ladder Layer5 Length
56   static const Int_t fgkSSDLay5SensorsNumber;      // Ladder Layer5 Sensor Number
57   static const Int_t fgkSSDLay5LadderNumber;       // Ladder Layer5 Number
58   static const Double_t fgkSSDLay5RadiusMin;       // Ladder Layer5 Min Radius
59   static const Double_t fgkSSDLay5RadiusMax;       // Ladder Layer5 Max Radius
60   static const Double_t fgkLay5CenterITSPosition;  // ITS center position respect
61                                                    // to Ladder Layer5
62   /////////////////////////////////////////////////////////////////////////
63   // Layer6 (lengths are in mm and angles in degrees)
64   /////////////////////////////////////////////////////////////////////////
65   static const Double_t fgkSSDLay6LadderLength;    // Ladder Layer6 Length
66   static const Int_t fgkSSDLay6SensorsNumber;      // Ladder Layer6 Sensor Number
67   static const Int_t fgkSSDLay6LadderNumber;       // Ladder Layer6 Number
68   static const Double_t fgkSSDLay6RadiusMin;       // Ladder Layer6 Min Radius
69   static const Double_t fgkSSDLay6RadiusMax;       // Ladder Layer6 Max Radius 
70   static const Double_t fgkLay6CenterITSPosition;  // ITS center position respect
71                                                    // to Ladder Layer6
72   /////////////////////////////////////////////////////////////////////////
73   // SSD Chips and Hybrid
74   /////////////////////////////////////////////////////////////////////////
75   static const Int_t fgkSSDChipNumber;             // SSD Module Chip Number
76   static const Double_t fgkSSDChipLength;          // SSD Module Chip Length
77   static const Double_t fgkSSDChipWidth;           // SSD Module Chip Width
78   static const Double_t fgkSSDChipHeight;          // SSD Module Chip Height
79   static const Double_t fgkSSDChipSeparationLength;// SSD Module Distance between Chips
80   static const Double_t fgkSSDChipGlueLength;      // SSD Module Chip Glue Layer Length
81   static const Double_t fgkSSDChipGlueWidth;       // SSD Module Chip Glue Layer Width 
82   static const Double_t fgkSSDChipGlueHeight;      // SSD Module Chip Glue Layer Height
83   /////////////////////////////////////////////////////////////////////////
84   // Stiffener Components
85   /////////////////////////////////////////////////////////////////////////
86   static const Double_t fgkSSDStiffenerLength;     // SSD Module Stiffener Length
87   static const Double_t fgkSSDStiffenerWidth;      // SSD Module Stiffener Width
88   static const Double_t fgkSSDStiffenerHeight;     // SSD Module Stiffener Height
89   static const Double_t fgkSSDStiffenerToChipDist; // SSD Module Stiffener position respect 
90                                                    // to sensor Edge
91   static const Double_t fgkSSDCapacitor0603Length; // SSD Stiffener Capacitor 0603 Length
92   static const Double_t fgkSSDCapacitor0603Width;  // SSD Stiffener Capacitor 0603 Width
93   static const Double_t fgkSSDCapacitor0603Height; // SSD Stiffener Capacitor 0603 Height
94   static const Double_t fgkSSDCapacitor1812Length; // SSD Stiffener Capacitor 1812 Length 
95   static const Double_t fgkSSDCapacitor1812Width;  // SSD Stiffener Capacitor 1812 Width
96   static const Double_t fgkSSDCapacitor1812Height; // SSD Stiffener Capacitor 1812 Height
97   static const Double_t fgkSSDWireLength;          // SSD Stiffener Wire Length
98   static const Double_t fgkSSDWireRadius;          // SSD Stiffener Wire Radius
99   static const Double_t fgkSSDConnectorPosition[2];// SSD Connector Position respect to Stiffener
100   static const Double_t fgkSSDConnectorSeparation; // SSD Connector separation distance
101   static const Double_t fgkSSDConnectorLength;     // SSD Stiffener Connector Length
102   static const Double_t fgkSSDConnectorWidth;      // SSD Stiffener Connector Width
103   static const Double_t fgkSSDConnectorHeight;     // SSD Stiffener Connector Height
104   static const Double_t fgkSSDConnectorAlHeight;     // SSD Stiffener Connector Al Height
105   static const Double_t fgkSSDConnectorNiHeight;     // SSD Stiffener Connector Ni Height
106   /////////////////////////////////////////////////////////////////////////
107   // Flex
108   /////////////////////////////////////////////////////////////////////////
109   static const Double_t fgkSSDFlexFullLength;      // SSD Flex Full Length
110   static const Double_t fgkSSDFlexLength[4];       // SSD Flex Components Length
111   static const Double_t fgkSSDFlexWidth[2];        // SSD Flex Components Width
112   static const Double_t fgkSSDFlexHeight[2];       // SSD Flex Layers Heigth
113   static const Double_t fgkSSDFlexAngle;           // SSD Flex Angle 
114   static const Double_t fgkSSDFlexHoleLength;      // SSD Flex Hole Length
115   static const Double_t fgkSSDFlexHoleWidth;       // SSD Flex Hole Width
116   static const Double_t fgkSSDEndFlexCompLength[6];// SSD End-Flex Components Length
117   static const Double_t fgkSSDEndFlexCompWidth[3]; // SSD End-Flex Components Width
118   /////////////////////////////////////////////////////////////////////////////////
119   // SSD Ladder Cable 
120   /////////////////////////////////////////////////////////////////////////////////
121   static const Double_t fgkSSDLadderCableWidth;    // SSD Ladder Cable Width
122   /////////////////////////////////////////////////////////////////////////
123   // SSD Module Components 
124   /////////////////////////////////////////////////////////////////////////
125   static const Double_t fgkSSDModuleStiffenerPosition[2]; // SSD Module Stiffener position 
126                                                           // respect to Sensor Edge
127   static const Double_t fgkSSDModuleSensorSupportDistance;// SSD Module Sensor Support Position 
128                                                           // respect to Sensor Edge 
129   static const Double_t fgkSSDModuleCoolingBlockToSensor; // SSD Cooling Block Position 
130                                                           // respect to sensor
131   /////////////////////////////////////////////////////////////////////////
132   // Chip Cables
133   /////////////////////////////////////////////////////////////////////////
134   static const Double_t fgkSSDChipCablesLength[2]; // SSD Chip Cables Components Length
135   static const Double_t fgkSSDChipCablesHeight[4]; // SSD Chip Cables Components Height   
136   static const Double_t fgkSSDChipCablesWidth[3];  // SSD Chip Cables Components Width
137   /////////////////////////////////////////////////////////////////////////
138   // Cooling Block
139   /////////////////////////////////////////////////////////////////////////
140   static const Double_t fgkSSDCoolingBlockLength;       // SSD Cooling Block Length
141   static const Double_t fgkSSDCoolingBlockWidth;        // SSD Cooling Block Width   
142   static const Double_t fgkSSDCoolingBlockHeight[3];    // SSD Cooling Block Heiht
143   static const Double_t fgkSSDCoolingBlockHoleRadius[2];// SSD Cooling Block Hole Radius
144   static const Double_t fgkSSDCoolingBlockHoleLength[2];// SSD Cooling Block Hole Length 
145   static const Double_t fgkSSDCoolingBlockHoleCenter;   // SSD Cooling Block Hole Ceneter Position
146   static const Double_t fgkSSDCoolingBlockHoleHeight;   // SSD Cooling Block Hole Height
147   /////////////////////////////////////////////////////////////////////////
148   // SSD Sensor 
149   /////////////////////////////////////////////////////////////////////////
150   static const char* fgkSSDSensitiveVolName;           // SSD Name of the Sensitive Part of the Sensor
151   static const Double_t fgkSSDSensorLength;            // SSD Sensor Length              
152   static const Double_t fgkSSDSensorHeight;            // SSD Sensor Height
153   static const Double_t fgkSSDSensorWidth;             // SSD Sensor Width
154   static const Double_t fgkSSDSensorOverlap;           // SSD Sensor Beam Axis Overlap
155   static const Double_t fgkSSDSensorInsensitiveLength; // SSD Insensitive Part Length
156   static const Double_t fgkSSDSensorInsensitiveWidth;  // SSD Insensitive Part Width
157   /////////////////////////////////////////////////////////////////////////
158   // SSD Sensor Support 
159   /////////////////////////////////////////////////////////////////////////
160   static const Double_t fgkSSDSensorSideSupportLength;        // SSD Side Sensor Support Length
161   static const Double_t fgkSSDSensorSideSupportWidth;         // SSD Side Sensor Support Width
162   static const Double_t fgkSSDSensorSideSupportHeight[2];     // SSD Side Sensor Support Height
163   static const Double_t fgkSSDSensorSideSupportThickness[2];  // SSD Side Sensor Support Thickness 
164   static const Double_t fgkSSDSensorSideSupportPosition;      // SSD Side Sensor Support Position 
165   static const Double_t fgkSSDSensorCenterSupportLength;      // SSD Center Sensor Support Length
166   static const Double_t fgkSSDSensorCenterSupportWidth;       // SSD Center Sensor Support Width
167   static const Double_t fgkSSDSensorCenterSupportHeight[2];   // SSD Center Sensor Support Height
168   static const Double_t fgkSSDSensorCenterSupportThickness[2];// SSD Center Sensor Support Thickness
169   static const Double_t fgkSSDSensorCenterSupportPosition;    // SSD Center Sensor Support Position
170   static const Int_t fgkSSDSensorSupportCombiTransNumber = 3; // Number of TGeoCombiTrans 
171                                                               // for positioning volumes in Sensor Support Assembly       
172   /////////////////////////////////////////////////////////////////////////
173   //Parameters for Carbon Fiber 
174   /////////////////////////////////////////////////////////////////////////
175   static const Double_t fgkCarbonFiberTriangleLength;            // Carbon Fiber Triangle Length 
176   static const Double_t fgkCarbonFiberTriangleAngle;             // Carbon Fiber Triangle Angle
177   static const Double_t fgkCarbonFiberSupportTopEdgeDist[2];     // Carbon Fiber Support Top Edge Components
178   static const Double_t fgkCarbonFiberSupportEdgeLength;         // Carbon Fiber Support Edge Lenght
179   static const Double_t fgkCarbonFiberSupportWidth;              // Carbon Fiber Support Edge Width
180   static const Double_t fgkCarbonFiberSupportXAxisLength;        // Carbon Fiber Support X Axis Lenght
181   static const Double_t fgkCarbonFiberSupportYAxisLength;        // Carbon Fiber Support Y Axis Lenght
182   static const Int_t fgkCarbonFiberAssemblyCombiTransNumber = 3; // Number of TGeoCombiTrans 
183                                                                  // for positioning volumes in Carbon Fiber Assembly 
184   //////////////////////////////////////////////////////////////////////////////
185   // Carbon Fiber Junction Parameters
186   //////////////////////////////////////////////////////////////////////////////
187   static const Double_t fgkCarbonFiberJunctionLength;            // Carbon Fiber Junction Length             
188   static const Double_t fgkCarbonFiberJunctionWidth;             // Carbon Fiber Junction Width 
189   static const Double_t fgkCarbonFiberJunctionEdge[2];           // Carbon Fiber Junction Edge Length  
190   static const Double_t fgkCarbonFiberJunctionAngle[2];          // Carbon Fiber Junction Angle 
191   static const Double_t fgkCarbonFiberJunctionToSensorSupport;   // Carbon Fiber Junction position respect to sensor
192   /////////////////////////////////////////////////////////////////////////
193   //Parameters for Carbon Fiber Lower Support (lengths are in mm)
194   /////////////////////////////////////////////////////////////////////////
195   static const Double_t fgkCarbonFiberLowerSupportWidth;            // Lower Support of Carbon Fiber Width
196   static const Double_t fgkCarbonFiberLowerSupportLowerLenght;      // Lower Support of Carbon Fiber Length
197   static const Double_t fgkCarbonFiberLowerSupportHeight;           // Lower Support of Carbon Fiber Height
198   static const Double_t fgkCarbonFiberLowerSupportTransverseWidth;  // Lower Support of Carbon Fiber Transverse separation
199   static const Double_t fgkCarbonFiberLowerSupportVolumeSeparation; // Distance between Lower Supports of Carbon Fiber 
200   static const Double_t fgkCarbonFiberLowerSupportVolumePosition[2];// Carbon fiber lower Support Position  
201   /////////////////////////////////////////////////////////////////////////
202   // End Ladder Carbon Fiber Lower Junction Parameters (lengths are in mm and angles in degrees)
203   /////////////////////////////////////////////////////////////////////////
204   static const Double_t fgkEndLadderCarbonFiberLowerJunctionLength[2];   // End Ladder Carbon Fiber Lower Up Support length 
205   static const Double_t fgkEndLadderCarbonFiberUpperJunctionLength[2];   // End Ladder Carbon Fiber Lower Down Support length 
206   static const Double_t fgkEndLadderMountingBlockPosition[2];            // End Ladder Mounting Block Position 
207   /////////////////////////////////////////////////////////////////////////
208   // Cooling Tube Support (lengths are in mm and angles in degrees)
209   /////////////////////////////////////////////////////////////////////////
210   static const Double_t fgkCoolingTubeSupportRmax;          // Cooling Tube Support Max Radius
211   static const Double_t fgkCoolingTubeSupportRmin;          // Cooling Tube Support Min Radius
212   static const Double_t fgkCoolingTubeSupportLength;        // Cooling Tube Support Length
213   static const Double_t fgkCoolingTubeSupportHeight;        // Cooling Tube Support Height
214   static const Double_t fgkCoolingTubeSupportWidth;         // Cooling Tube Support Width
215   static const Double_t fgkCoolingTubeSupportSeparation;    // Cooling Tube Support Separation
216   static const Double_t fgkCoolingTubeSupportToCarbonFiber; // Cooling Tube Support position respect to Carbon Fiber  
217   /////////////////////////////////////////////////////////////////////////////////
218   // Cooling Tube (lengths are in mm and angles in degrees)
219   /////////////////////////////////////////////////////////////////////////////////
220   static const Double_t fgkCoolingTubeRmax;       // Cooling Tube Max Radius 
221   static const Double_t fgkCoolingTubeRmin;       // Cooling Tube Min Radius
222   static const Double_t fgkCoolingTubeLength;     // Cooling Tube Length  
223   static const Double_t fgkCoolingTubeSeparation; // Cooling Tube Separation
224   /////////////////////////////////////////////////////////////////////////
225   // SSD Mounting Block Parameters (lengths are in mm and angles in degrees)
226   /////////////////////////////////////////////////////////////////////////
227   static const Double_t fgkSSDMountingBlockLength[3];  // SSD Mounting Block Components Lengths
228   static const Double_t fgkSSDMountingBlockHeight[4];  // SSD Mounting Block Components Heights
229   static const Double_t fgkSSDMountingBlockWidth;      // SSD Mounting Block Width
230   static const Double_t fgkSSDMountingBlockHoleTrapezoidAngle;  // SSD Mounting Block Hole Trapezoid Angle
231   static const Double_t fgkSSDMountingBlockHoleTrapezoidHeight; // SSD Mounting Block Hole Trapezoid Height
232   static const Double_t fgkSSDMountingBlockHoleTrapezoidUpBasis;// SSD Mounting Block Hole Trapezoid Up Basis Length
233   static const Double_t fgkSSDMountingBlockHoleTubeLength[2];   // SSD Mounting Block Hole Tube Lengths   
234   static const Double_t fgkSSDMountingBlockHoleTubeWidth[2];    // SSD Mounting Block Hole Tube Width   
235   static const Double_t fgkSSDMountingBlockHoleRadius;          // SSD Mounting Block Hole radius  
236   static const Double_t fgkSSDMountingBlockScrewHoleEdge;       // SSD Mounting Block Screw Hole Edge  
237   static const Double_t fgkSSDMountingBlockScrewHoleHeigth;     // SSD Mounting Block Screw Hole Height  
238   static const Double_t fgkSSDMountingBlockScrewHoleRadius[2];  // SSD Mounting Block Screw Hole Radii
239   /////////////////////////////////////////////////////////////////////////
240   // Private methods for private members generation
241   /////////////////////////////////////////////////////////////////////////
242   void CreateMaterials();                               // Method setting the materials 
243   void CreateTransformationMatrices();  // Method setting the transformation matrices
244   void CreateBasicObjects();                    // Method creating the basic objects of ssd geometry
245   void SetSSDSensor();                                  // Method setting the SSD Layer 5 and 6 sensors
246   TList* GetCarbonFiberSupportList();   // Method generating CarbonFiberSupport
247   TGeoVolume* GetCarbonFiberJunction(Double_t width); // Method generating 
248                                                                                 // CarbonFiberJunction
249   TList* GetCarbonFiberLowerSupportList(); 
250                                                                             // Method generating CarbonFiberLowerSupport
251   TGeoVolume* GetSSDSensorSupport(Double_t length, Double_t height, 
252                                                                   Double_t width, Double_t* thickness) const; //
253                                                                                 // Method generating SSDSensorSupport
254   TGeoVolume* GetCoolingTubeSupport(Int_t nedges); // Method generating CoolingTubeSupport 
255   TList* GetSSDHybridParts();                   // Method setting Hybrid Components 
256   TGeoVolume* GetCoolingBlockSystem();  // Method generating Cooling Block System
257   TGeoVolume* GetSSDStiffenerFlex()const;    // Method generating StiffenerFlex
258   TGeoVolume* GetSSDEndFlex();                  // Method generating EndFlex
259   TGeoVolume* GetSSDMountingBlock();    // Method generating Mounting Block
260   TList* GetCoolingTubeList()const;                     // Method generating list of Tubes
261   TGeoVolume* GetSSDCoolingBlock(Int_t nedges); 
262                                                                             // Method generating StiffenerFlex
263   TGeoVolume* GetSSDChipCables(Double_t SSDChipCablesHeigth, Int_t nedges); 
264                                                                                 // Method setting ChipCables
265   TList* GetSSDChipSystem();                    // Method setting Chip System
266   TGeoVolume* GetSSDChips() const;     // Method generating Chips
267   TList* GetLadderCableSegment(Double_t ssdendladdercablelength); 
268                                                                                 // Method generating LadderCableSegment
269   TGeoVolume* GetLadderCable(Int_t n, Double_t ssdendladdercablelength); 
270                                                                                 // Method generating Ladder Cable
271   TGeoVolume* GetLadderCableAssembly(Int_t n, Double_t ssdendladdercablelength); 
272                                                                                 // Method generating Ladder Cable Assembly
273   TList* GetLadderCableAssemblyList(Int_t n, Double_t ssdendladdercablelength); 
274                                                                                 // Method generating Ladder Cable List
275   TGeoXtru* GetArcShape(Double_t phi, Double_t rmin, 
276                                             Double_t rmax, Int_t nedges, Double_t height); 
277                                                                                 //Auxiliary Method for Arc Shape
278   TGeoArb8* GetArbShape(TVector3* vertexpos[],Double_t* width, 
279                         Double_t height,char* shapename,Int_t isign = 1) const;
280                                                                            // Method generating an Arb shape 
281   TVector3* GetReflection(TVector3* vector,Double_t* param) const; 
282                                                                                 // Given an axis specified by param,
283                                                                                 // it gives the reflection of the point respect to the axis
284   TGeoHMatrix* AddTranslationToHMatrix(TGeoHMatrix* ct,Double_t dx,Double_t dy,
285                                                        Double_t dz) const;
286                                                                                 // add (dx,dy,dz) translation to a initial TGeoCombiTrans
287   /////////////////////////////////////////////////////////////////////////
288   // Private members
289   /////////////////////////////////////////////////////////////////////////
290   // Materials
291   /////////////////////////////////////////////////////////////////////////
292   TGeoMedium* fSSDChipMedium;                    // SSD Module Chip Medium
293   TGeoMedium* fSSDChipGlueMedium;                // SSD Module Chip Glue Layer Medium 
294   TGeoMedium* fSSDStiffenerMedium;               // SSDStiffener Medium 
295   TGeoMedium* fSSDStiffenerConnectorMedium;      // SSD Stiffener Connector Medium 
296   TGeoMedium* fSSDStiffener0603CapacitorMedium;  // SSD Stiffener Capacitor 0603 Medium 
297   TGeoMedium* fSSDStiffener1812CapacitorMedium;  // SSD Stiffener Capacitor 1812 Medium 
298   TGeoMedium* fSSDStiffenerHybridWireMedium;     // SSD Stiffener Wire Medium  
299   TGeoMedium* fSSDKaptonFlexMedium;              // SSD Flex Kapton Layer Medium    
300   TGeoMedium* fSSDAlTraceFlexMedium;             // SSD Flex Al Layer Medium 
301   TGeoMedium* fSSDAlTraceLadderCableMedium;      // SSD Ladder Cable Al Layer Medium
302   TGeoMedium* fSSDKaptonLadderCableMedium;       // SSD Ladder Cable Kapton Layer Medium
303   TGeoMedium* fSSDKaptonChipCableMedium;         // SSD Chip Cables Kapton Layer Medium 
304   TGeoMedium* fSSDAlTraceChipCableMedium;        // SSD Chip Cables Al Layer Medium
305   TGeoMedium* fSSDAlCoolBlockMedium;             // SSD Cooling Block Al Medium
306   TGeoMedium* fSSDSensorMedium;                  // SSD Sensor Medium  
307   TGeoMedium* fSSDSensorSupportMedium;                  // SSD Sensor Support Medium   
308   TGeoMedium* fSSDCarbonFiberMedium;             // SSD Carbon Fiber Medium 
309   TGeoMedium* fSSDTubeHolderMedium;              // Cooling Tube Support Medium
310   TGeoMedium* fSSDCoolingTubeWater;              // Medium for Inner Part of Cooling Tube
311   TGeoMedium* fSSDCoolingTubePhynox;             // Medium for Cooling Tube 
312   TGeoMedium* fSSDMountingBlockMedium;           // Medium for SSD Mounting Block  
313   TGeoMedium* fSSDAir;                                                   // SSD Air
314   /////////////////////////////////////////////////////////////////////////
315   Bool_t fCreateMaterials;                // Bool variable which verifies if materials have been created
316   Bool_t fTransformationMatrices; // Bool variable which verifies if matrices have been allocated
317   Bool_t fBasicObjects;          // Bool variable which verifies if basic objects have been allocated
318   /////////////////////////////////////////////////////////////////////////
319   // Carbon Fiber Support Matrices and Objects
320   ////////////////////////////////////////////
321   static const Int_t fgkcarbonfibersupportnumber = 2;                              // Support Number    
322   TGeoVolume* fcarbonfibersupport[fgkcarbonfibersupportnumber];            // Support
323   TGeoHMatrix* fcarbonfibersupportmatrix[fgkcarbonfibersupportnumber]; // Support Matrix
324   /////////////////////////
325   // Carbon Fiber Junction
326   ////////////////////////
327   static const Int_t fgkcarbonfiberjunctionumber = 3;  // Carbon Fiber Number
328   TGeoVolume* fcarbonfiberjunction;                                        // Carbon Fiber
329   TGeoHMatrix* fcarbonfiberjunctionmatrix[fgkcarbonfiberjunctionumber]; // Carbon Fiber Matrix
330   /////////////////////////////
331   // Carbon Fiber Lower Support
332   /////////////////////////////
333   static const Int_t fgkcarbonfiberlowersupportnumber = 2; // Carbon Fiber Lower Support Number
334   TGeoVolume* fcarbonfiberlowersupport[fgkcarbonfiberlowersupportnumber]; // Carbon Fiber Lower Support 
335   TGeoTranslation* fcarbonfiberlowersupportrans[fgkcarbonfiberlowersupportnumber];// Carbon Fiber Lower Support Translation
336   /////////////////////////////
337   // SSD Sensor Support
338   /////////////////////////////
339   static const Int_t fgkvolumekind = 2; // volumekind = 0 : side ssd support
340                                                                                 // volumekind = 1 : central ssd support 
341   static const Int_t fgkssdsensorsupportnumber = 3; // SSD Sensor Support Number
342   TGeoVolume** fssdsensorsupport[fgkvolumekind];    // SSD Sensor 
343   TGeoHMatrix* fssdsensorsupportmatrix[fgkssdsensorsupportnumber]; // SSD Sensor Matrix 
344   /////////////////////////////////////////////////////////////
345   // SSD Cooling Tube Support
346   /////////////////////////////////////////////////////////////
347   static const Int_t fgkcoolingtubesupportnumber = 2; // Cooling Tube Support Number
348   TGeoVolume* fcoolingtubesupport;                                        // Cooling Tube Support
349   TGeoHMatrix* fcoolingtubesupportmatrix[fgkcoolingtubesupportnumber]; // Cooling Tube Support Matrix 
350   /////////////////////////////////////////////////////////////
351   // SSD Hybrid
352   /////////////////////////////////////////////////////////////
353   static const Int_t fgkhybridcompnumber = 3;  // Hybrid number
354   TGeoVolume* fssdhybridcomponent[fgkhybridcompnumber]; // Hybrid Components
355   TGeoHMatrix* fhybridmatrix;           // Hybrid Matrix
356   /////////////////////////////////////////////////////////////
357   // SSD Cooling Block System
358   /////////////////////////////////////////////////////////////
359   static const Int_t fgkcoolingblocknumber = 4; // Cooling Block Number
360   TGeoVolume* fssdcoolingblocksystem;  // Cooling Block 
361   TGeoHMatrix* fcoolingblocksystematrix;  // Cooling Block Matrix 
362   TGeoHMatrix* fcoolingblockmatrix[fgkcoolingblocknumber];  // Cooling System Matrix
363   /////////////////////////////////////////////////////////////
364   // SSD Flex  
365   /////////////////////////////////////////////////////////////
366   static const Int_t fgkflexnumber = 2; // Flex Number 
367   TGeoVolume* fssdstiffenerflex;                // Stiffener Flex
368   TGeoVolume* fssdendflex;                              // End flex
369   TGeoHMatrix* fstiffenerflexmatrix[fgkflexnumber]; // Stiffener Flex Matrix
370   TGeoHMatrix* fendflexmatrix[fgkflexnumber];       // End Flex Matrix
371   /////////////////////////////////////////
372   // Cooling Tube
373   /////////////////////////////////////////
374   static const Int_t fgkcoolingtubenumber = 3;                          // Coling Tube Number
375   TGeoHMatrix** fcoolingtubematrix[fgkcoolingtubenumber+1];  // Cooling Tube Matrix
376   TGeoVolume* fcoolingtube[fgkcoolingtubenumber];            // Cooling Tube
377   /////////////////////////////////////////
378   // End Ladder Components
379   /////////////////////////////////////////
380   TGeoVolumeAssembly* fendladdersegment[2];  // End Ladder Segment 
381   TGeoHMatrix** fendladdersegmentmatrix[2];  // End Ladder Matrix
382   ///////////////////////////////////
383   // End Ladder Carbon Fiber Junction
384   ///////////////////////////////////
385   static const Int_t fgkendlabbercarbonfiberjunctionumber = 2; // End Ladder Carbon fiber Junction Number
386   TGeoVolume** fendladdercarbonfiberjunction[fgkendlabbercarbonfiberjunctionumber]; // End Ladder Carbon fiber Junction Volumes
387   static const Int_t fgkendladdercabonfiberjunctionmatrixnumber = 3; // End Ladder Carbon fiber Junction Matrix Number
388   TGeoHMatrix** fendladdercarbonfiberjunctionmatrix[fgkendlabbercarbonfiberjunctionumber]; // End Ladder Carbon fiber Junction Matrix 
389   ///////////////////////////////////
390   // End Ladder Carbon Fiber Support
391   ///////////////////////////////////
392   static const Int_t fgkendladdercarbonfibermatrixnumber = 2; // End Ladder Carbon fiber Matrix Number
393   TGeoHMatrix** fendladdercarbonfibermatrix[fgkendladdercarbonfibermatrixnumber]; // End Ladder Carbon fiber Matrix 
394   ///////////////////////////////////
395   // End Ladder SSD Mounting Block
396   ///////////////////////////////////
397   static const Int_t fgkendladdermountingblocknumber = 2; // Mounting Block Number   
398   TGeoVolume* fendladdermountingblock;                                    // Mounting Block
399   TGeoTranslation* fendladdermountingblocktrans[fgkendladdermountingblocknumber]; // Mounting Block Translation
400   ///////////////////////////////////
401   // End Ladder Lower Support
402   ///////////////////////////////////
403   static const Int_t fgkendladderlowersuppnumber = 2; // End Ladder Lower Support Number
404   TGeoTranslation* fendladderlowersupptrans[fgkendladderlowersuppnumber+1]; // End Ladder Lower Support Translations
405   /////////////////////////////////////////////////////////////////////////
406   // LadderCables 
407   /////////////////////////////////////////////////////////////////////////
408   static const Int_t fgkladdercablematrixnumber = 4; // Number of TGeoCombiTrans 
409                                                      // for positioning Ladder Cable volumes  
410   static const Int_t fgkladdercablesnumber = 2;           // Number of Ladder Cables Layers
411   TGeoHMatrix **fladdercablematrix[fgkladdercablesnumber]; // TGeoCombiTrans for positioning
412                                                            // Ladder Cables volumes
413   ///////////////////////////////////
414   // Ladder Segment
415   ///////////////////////////////////
416   static const Int_t fgkladdersegmentnumber = 2; // Ladder Segment Kinds Number
417   TGeoVolumeAssembly* fladdersegment[fgkladdersegmentnumber]; // Ladder Segment
418   ///////////////////////////////////
419   // Ladder 
420   ///////////////////////////////////
421   static const Int_t fgkladdernumber = 2;                     // Ladder Number 
422   TGeoVolume* fladder[fgkladdernumber];                       //fladder[0]: ladder of Layer 5
423                                                                                                       //fladder[1]: ladder of Layer 6
424   TGeoHMatrix** fladdermatrix[fgkladdernumber];       // Ladder Matrix
425   ///////////////////////////////////
426   // SSD Sensor
427   ///////////////////////////////////
428   TGeoVolume* fSSDSensor5;  // Layer 5 SSD Sensor
429   TGeoVolume* fSSDSensor6;  // Layer 6 SSD Sensor
430   TGeoHMatrix** fssdsensormatrix[fgkladdernumber]; // SSD Sensor Matrix
431   ///////////////////////////////////
432   // SSD Layer
433   ///////////////////////////////////
434   static const Int_t fgklayernumber = 2; // Layer Number
435   TGeoVolume* fSSDLayer5;                                // SSD Layer 5
436   TGeoVolume* fSSDLayer6;                    // SSD Layer 6
437   TGeoHMatrix** flayermatrix[fgklayernumber]; // Layer Transformations
438   /////////////////////////////////////////////////////////////////////////
439   // Mother Volume 
440   /////////////////////////////////////////////////////////////////////////
441   TGeoVolume *fMotherVol;                                    // Mother volume for ITS Layer5 and Layer6   
442   TGeoVolume* GetMotherVolume() const { return fMotherVol;}; // Method returning Mother Volume
443   /////////////////////////////////////////////////////////////////////////
444   // Color Display 
445   /////////////////////////////////////////////////////////////////////////
446   Int_t fColorCarbonFiber;    //  display colors
447   Int_t fColorRyton;          //  ===
448   Int_t fColorPhynox;         //  ===
449   Int_t fColorSilicon;        //  ===
450   Int_t fColorAl;             //  ===
451   Int_t fColorKapton;         //  ===
452   Int_t fColorPolyhamide;     //  ===
453   Int_t fColorStiffener;      //  ===
454   Int_t fColorEpoxy;          //  ===
455   Int_t fColorWater;              //  ===
456   Int_t fColorG10;            //  ===
457   ClassDef(AliITSv11GeometrySSD, 2)     // ITS v11 SSD geometry
458 };
459 #endif