Bug fix. GetMedium declared twice
[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 #include <TObject.h>
8 class TGeoVolume;
9 class TGeoCombiTrans;
10 class TGeoMedium;
11 class TGeoCompositeShape;
12 class TGeoMatrix;
13 class TVector3;
14 class TGeoArb8;
15 class TList;
16 class TGeoTube;
17 class TGeoHMatrix;
18 class AliITSv11GeometrySSD: public TObject {
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 //  TGeoMedium *GetMedium(char*); // to be interfaced with AliRoot
136   /////////////////////////////////////////////////////////////////////////
137   //Auxiliary methods for shapes building
138   /////////////////////////////////////////////////////////////////////////
139   TVector3* GetReflection(TVector3* vector,Double_t* param) const;
140   // Given an axis specified by param, it gives the reflection of the point
141   // respect to the axis
142   /////////////////////////////////////////////////////////////////////////
143   TGeoArb8* GetArbShape(TVector3* vertexpos[],Double_t* width, 
144                         Double_t height,char* shapename,Int_t isign = 1) const;
145   // Method generating an arb shape 
146   /////////////////////////////////////////////////////////////////////////
147   TGeoArb8* GetTriangleShape(TVector3* vertexpos[],Double_t height, char* shapename) const;
148   // Method generating a triangle shape 
149   /////////////////////////////////////////////////////////////////////////
150   TGeoArb8* GetTrapezoidShape(TVector3* vertexpos[],Double_t* width,    
151                               Double_t height,char* shapename) const;
152   // Method generating a trapezoid shape 
153   /////////////////////////////////////////////////////////////////////////
154   TGeoCombiTrans* AddTranslationToCombiTrans(TGeoCombiTrans* ct,Double_t dx,
155                                              Double_t dy,Double_t dz) const;
156   // add (dx,dy,dz) translation to a initial TGeoCombiTrans
157   /////////////////////////////////////////////////////////////////////////
158   //Auxiliary methods for material building
159   /////////////////////////////////////////////////////////////////////////
160   TGeoMedium* GetMedium(const char* mediumName);
161   // It returns the Medium
162   /////////////////////////////////////////////////////////////////////////
163   void CreateMaterials();
164   // it creates the matherials    
165 private:
166   /////////////////////////////////////////////////////////////////////////
167   // Layer5 (lengths are in mm and angles in degrees)
168   /////////////////////////////////////////////////////////////////////////
169   static const Double_t fgkSSDLay5LadderLength;    // Ladder Layer5 Length
170   static const Int_t fgkSSDLay5SensorsNumber;      // Ladder Layer5 Sensor Number
171   static const Int_t fgkSSDLay5LadderNumber;       // Ladder Layer5 Number
172   static const Double_t fgkSSDLay5RadiusMin;       // Ladder Layer5 Min Radius
173   static const Double_t fgkSSDLay5RadiusMax;       // Ladder Layer5 Max Radius
174   static const Double_t fgkLay5CenterITSPosition;  // ITS center position respect
175                                                    // to Ladder Layer5
176   /////////////////////////////////////////////////////////////////////////
177   // Layer6 (lengths are in mm and angles in degrees)
178   /////////////////////////////////////////////////////////////////////////
179   static const Double_t fgkSSDLay6LadderLength;    // Ladder Layer6 Length
180   static const Int_t fgkSSDLay6SensorsNumber;      // Ladder Layer6 Sensor Number
181   static const Int_t fgkSSDLay6LadderNumber;       // Ladder Layer6 Number
182   static const Double_t fgkSSDLay6RadiusMin;       // Ladder Layer6 Min Radius
183   static const Double_t fgkSSDLay6RadiusMax;       // Ladder Layer6 Max Radius 
184   static const Double_t fgkLay6CenterITSPosition;  // ITS center position respect
185                                                    // to Ladder Layer6
186   /////////////////////////////////////////////////////////////////////////
187   // SSD Chips and Hybrid
188   /////////////////////////////////////////////////////////////////////////
189   static const Int_t fgkSSDChipNumber;             // SSD Module Chip Number
190   static const Double_t fgkSSDChipLength;          // SSD Module Chip Length
191   static const Double_t fgkSSDChipWidth;           // SSD Module Chip Width
192   static const Double_t fgkSSDChipHeight;          // SSD Module Chip Height
193   static const Double_t fgkSSDChipSeparationLength;// SSD Module Distance between Chips
194   static const Double_t fgkSSDChipGlueLength;      // SSD Module Chip Glue Layer Length
195   static const Double_t fgkSSDChipGlueWidth;       // SSD Module Chip Glue Layer Width 
196   static const Double_t fgkSSDChipGlueHeight;      // SSD Module Chip Glue Layer Height
197   TGeoMedium* fSSDChipMedium;                    // SSD Module Chip Medium
198   TGeoMedium* fSSDChipGlueMedium;                // SSD Module Chip Glue Layer Medium 
199   /////////////////////////////////////////////////////////////////////////
200   // Stiffener Components
201   /////////////////////////////////////////////////////////////////////////
202   static const Double_t fgkSSDStiffenerLength;     // SSD Module Stiffener Length
203   static const Double_t fgkSSDStiffenerWidth;      // SSD Module Stiffener Width
204   static const Double_t fgkSSDStiffenerHeight;     // SSD Module Stiffener Height
205   static const Double_t fgkSSDStiffenerToChipDist; // SSD Module Stiffener position respect 
206                                                    // to sensor Edge
207   static const Double_t fgkSSDCapacitor0603Length; // SSD Stiffener Capacitor 0603 Length
208   static const Double_t fgkSSDCapacitor0603Width;  // SSD Stiffener Capacitor 0603 Width
209   static const Double_t fgkSSDCapacitor0603Height; // SSD Stiffener Capacitor 0603 Height
210   static const Double_t fgkSSDCapacitor1812Length; // SSD Stiffener Capacitor 1812 Length 
211   static const Double_t fgkSSDCapacitor1812Width;  // SSD Stiffener Capacitor 1812 Width
212   static const Double_t fgkSSDCapacitor1812Height; // SSD Stiffener Capacitor 1812 Height
213   static const Double_t fgkSSDWireLength;          // SSD Stiffener Wire Length
214   static const Double_t fgkSSDWireRadius;          // SSD Stiffener Wire Radius
215   static const Double_t fgkSSDConnectorPosition[2];// SSD Connector Position respect to Stiffener
216   static const Double_t fgkSSDConnectorSeparation; // SSD Connector separation distance
217   static const Double_t fgkSSDConnectorLength;     // SSD Stiffener Connector Length
218   static const Double_t fgkSSDConnectorWidth;      // SSD Stiffener Connector Width
219   static const Double_t fgkSSDConnectorHeight;     // SSD Stiffener Connector Height
220   TGeoMedium* fSSDStiffenerMedium;               // SSDStiffener Medium 
221   TGeoMedium* fSSDStiffenerConnectorMedium;      // SSD Stiffener Connector Medium 
222   TGeoMedium* fSSDStiffener0603CapacitorMedium;  // SSD Stiffener Capacitor 0603 Medium 
223   TGeoMedium* fSSDStiffener1812CapacitorMedium;  // SSD Stiffener Capacitor 1812 Medium 
224   TGeoMedium* fSSDStiffenerHybridWireMedium;     // SSD Stiffener Wire Medium  
225   /////////////////////////////////////////////////////////////////////////
226   // Flex
227   /////////////////////////////////////////////////////////////////////////
228   static const Double_t fgkSSDFlexFullLength;      // SSD Flex Full Length
229   static const Double_t fgkSSDFlexLength[4];       // SSD Flex Components Length
230   static const Double_t fgkSSDFlexWidth[2];        // SSD Flex Components Width
231   static const Double_t fgkSSDFlexHeight[2];       // SSD Flex Layers Heigth
232   static const Double_t fgkSSDFlexAngle;           // SSD Flex Angle 
233   static const Double_t fgkSSDFlexHoleLength;      // SSD Flex Hole Length
234   static const Double_t fgkSSDFlexHoleWidth;       // SSD Flex Hole Width
235   static const Double_t fgkSSDEndFlexCompLength[6];// SSD End-Flex Components Length
236   static const Double_t fgkSSDEndFlexCompWidth[3]; // SSD End-Flex Components Width
237   TGeoMedium* fSSDKaptonFlexMedium;              // SSD Flex Kapton Layer Medium    
238   TGeoMedium* fSSDAlTraceFlexMedium;             // SSD Flex Al Layer Medium 
239   /////////////////////////////////////////////////////////////////////////////////
240   // SSD Ladder Cable 
241   /////////////////////////////////////////////////////////////////////////////////
242   static const Double_t fgkSSDLadderCableWidth;    // SSD Ladder Cable Width
243   TGeoMedium* fSSDAlTraceLadderCableMedium;      // SSD Ladder Cable Al Layer Medium
244   TGeoMedium* fSSDKaptonLadderCableMedium;       // SSD Ladder Cable Kapton Layer Medium
245   /////////////////////////////////////////////////////////////////////////
246   // SSD Module Components 
247   /////////////////////////////////////////////////////////////////////////
248   static const Double_t fgkSSDModuleStiffenerPosition[2]; // SSD Module Stiffener position 
249                                                           // respect to Sensor Edge
250   static const Double_t fgkSSDModuleSensorSupportDistance;// SSD Module Sensor Support Position 
251                                                           // respect to Sensor Edge 
252   static const Double_t fgkSSDModuleCoolingBlockToSensor; // SSD Cooling Block Position 
253                                                           // respect to sensor
254   static const Int_t fgkSSDModuleCombiTransNumber = 7;    // Number of TGeoCombiTrans 
255                                                           // for positioning volumes in SSD Module 
256   void SetSSDModuleCombiTransMatrix(Double_t);            // Method for generating TGeoCombiTrans for 
257                                                           // for volume positioning in SSD Module
258   TGeoCombiTrans *fSSDModuleCombiTransMatrix[fgkSSDModuleCombiTransNumber]; // TGeoCombiTrans roto-trans
259                                                           // transformations for volume positioning
260   /////////////////////////////////////////////////////////////////////////
261   // Chip Cables
262   /////////////////////////////////////////////////////////////////////////
263   static const Double_t fgkSSDChipCablesLength[2]; // SSD Chip Cables Components Length
264   static const Double_t fgkSSDChipCablesHeight[4]; // SSD Chip Cables Components Height   
265   static const Double_t fgkSSDChipCablesWidth[3];  // SSD Chip Cables Components Width
266   TGeoMedium* fSSDKaptonChipCableMedium;         // SSD Chip Cables Kapton Layer Medium 
267   TGeoMedium* fSSDAlTraceChipCableMedium;        // SSD Chip Cables Al Layer Medium
268   /////////////////////////////////////////////////////////////////////////
269   // Cooling Block
270   /////////////////////////////////////////////////////////////////////////
271   static const Double_t fgkSSDCoolingBlockLength;       // SSD Cooling Block Length
272   static const Double_t fgkSSDCoolingBlockWidth;        // SSD Cooling Block Width   
273   static const Double_t fgkSSDCoolingBlockHeight[3];    // SSD Cooling Block Heiht
274   static const Double_t fgkSSDCoolingBlockHoleRadius[2];// SSD Cooling Block Hole Radius
275   static const Double_t fgkSSDCoolingBlockHoleLength[2];// SSD Cooling Block Hole Length 
276   static const Double_t fgkSSDCoolingBlockHoleCenter;   // SSD Cooling Block Hole Ceneter Position
277   static const Double_t fgkSSDCoolingBlockHoleHeight;   // SSD Cooling Block Hole Height
278   TGeoMedium* fSSDAlCoolBlockMedium;                  // SSD Cooling Block Al Medium
279   /////////////////////////////////////////////////////////////////////////
280   // SSD Sensor 
281   /////////////////////////////////////////////////////////////////////////
282   static const char* fgkSSDSensitiveVolName;           // SSD Name of the Sensitive Part of the Sensor
283   static const Double_t fgkSSDSensorLength;            // SSD Sensor Length              
284   static const Double_t fgkSSDSensorHeight;            // SSD Sensor Height
285   static const Double_t fgkSSDSensorWidth;             // SSD Sensor Width
286   static const Double_t fgkSSDSensorOverlap;           // SSD Sensor Beam Axis Overlap
287   static const Double_t fgkSSDSensorInsensitiveLength; // SSD Insensitive Part Length
288   static const Double_t fgkSSDSensorInsensitiveWidth;  // SSD Insensitive Part Width
289   TGeoMedium* fSSDSensorMedium;                      // SSD Sensor Medium  
290   /////////////////////////////////////////////////////////////////////////
291   // SSD Sensor Support 
292   /////////////////////////////////////////////////////////////////////////
293   static const Double_t fgkSSDSensorSideSupportLength;        // SSD Side Sensor Support Length
294   static const Double_t fgkSSDSensorSideSupportWidth;         // SSD Side Sensor Support Width
295   static const Double_t fgkSSDSensorSideSupportHeight[2];     // SSD Side Sensor Support Height
296   static const Double_t fgkSSDSensorSideSupportThickness[2];  // SSD Side Sensor Support Thickness 
297   static const Double_t fgkSSDSensorSideSupportPosition;      // SSD Side Sensor Support Position 
298   static const Double_t fgkSSDSensorCenterSupportLength;      // SSD Center Sensor Support Length
299   static const Double_t fgkSSDSensorCenterSupportWidth;       // SSD Center Sensor Support Width
300   static const Double_t fgkSSDSensorCenterSupportHeight[2];   // SSD Center Sensor Support Height
301   static const Double_t fgkSSDSensorCenterSupportThickness[2];// SSD Center Sensor Support Thickness
302   static const Double_t fgkSSDSensorCenterSupportPosition;    // SSD Center Sensor Support Position
303   static const Int_t fgkSSDSensorSupportCombiTransNumber = 3; // Number of TGeoCombiTrans 
304                                                               // for positioning volumes in Sensor Support Assembly       
305   void SetSSDSensorSupportCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
306                                                               // volume positioning in Sensor Support Assembly   
307   TGeoCombiTrans *fSSDSensorSupportCombiTransMatrix[fgkSSDSensorSupportCombiTransNumber]; // TGeoCombiTrans roto-trans
308                                                           // transformations for volume positioning in Sensor Support Assembly
309   TGeoMedium* fSSDSensorSupportMedium;                  // SSD Sensor Support Medium   
310   /////////////////////////////////////////////////////////////////////////
311   //Parameters for Carbon Fiber 
312   /////////////////////////////////////////////////////////////////////////
313   static const Double_t fgkCarbonFiberTriangleLength;            // Carbon Fiber Triangle Length 
314   static const Double_t fgkCarbonFiberTriangleAngle;             // Carbon Fiber Triangle Angle
315   static const Double_t fgkCarbonFiberSupportTopEdgeDist[2];     // Carbon Fiber Support Top Edge Components
316   static const Double_t fgkCarbonFiberSupportEdgeLength;         // Carbon Fiber Support Edge Lenght
317   static const Double_t fgkCarbonFiberSupportWidth;              // Carbon Fiber Support Edge Width
318   static const Double_t fgkCarbonFiberSupportXAxisLength;        // Carbon Fiber Support X Axis Lenght
319   static const Double_t fgkCarbonFiberSupportYAxisLength;        // Carbon Fiber Support Y Axis Lenght
320   static const Int_t fgkCarbonFiberAssemblyCombiTransNumber = 3; // Number of TGeoCombiTrans 
321                                                                  // for positioning volumes in Carbon Fiber Assembly 
322   void SetCarbonFiberAssemblyCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
323                                                                  // volume positioning in Carbon Fiber Assembly
324   TGeoCombiTrans *fCarbonFiberAssemblyCombiTransMatrix[fgkCarbonFiberAssemblyCombiTransNumber]; // TGeoCombiTrans roto-trans
325                                                                  // transformations for volume positioning in Carbon Fiber Assembly
326   TGeoMedium* fSSDCarbonFiberMedium;                           // SSD Carbon Fiber Medium 
327   //////////////////////////////////////////////////////////////////////////////
328   // Carbon Fiber Junction Parameters
329   //////////////////////////////////////////////////////////////////////////////
330   static const Double_t fgkCarbonFiberJunctionLength;            // Carbon Fiber Junction Length             
331   static const Double_t fgkCarbonFiberJunctionWidth;             // Carbon Fiber Junction Width 
332   static const Double_t fgkCarbonFiberJunctionEdge[2];           // Carbon Fiber Junction Edge Length  
333   static const Double_t fgkCarbonFiberJunctionAngle[2];          // Carbon Fiber Junction Angle 
334   static const Double_t fgkCarbonFiberJunctionToSensorSupport;   // Carbon Fiber Junction position respect to sensor
335   static const Int_t fgkCarbonFiberJunctionCombiTransNumber = 3; // Number of TGeoCombiTrans 
336                                                                  // for positioning volumes in Carbon Fiber Junction Assembly 
337   void SetCarbonFiberJunctionCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
338                                                                  // volume positioning in Carbon Fiber Junction Assembly
339   TGeoCombiTrans *fCarbonFiberJunctionCombiTransMatrix[fgkCarbonFiberJunctionCombiTransNumber];// TGeoCombiTrans roto-trans
340                                                                  // transformations for volume positioning in Carbon Fiber Junction Assembly
341   /////////////////////////////////////////////////////////////////////////
342   //Parameters for Carbon Fiber Lower Support (lengths are in mm)
343   /////////////////////////////////////////////////////////////////////////
344   static const Double_t fgkCarbonFiberLowerSupportWidth;            // Lower Support of Carbon Fiber Width
345   static const Double_t fgkCarbonFiberLowerSupportLowerLenght;      // Lower Support of Carbon Fiber Length
346   static const Double_t fgkCarbonFiberLowerSupportHeight;           // Lower Support of Carbon Fiber Height
347   static const Double_t fgkCarbonFiberLowerSupportTransverseWidth;  // Lower Support of Carbon Fiber Transverse separation
348   static const Double_t fgkCarbonFiberLowerSupportVolumeSeparation; // Distance between Lower Supports of Carbon Fiber 
349   static const Double_t fgkCarbonFiberLowerSupportVolumePosition[2];// Carbon fiber lower Support Position  
350   /////////////////////////////////////////////////////////////////////////
351   // End Ladder Carbon Fiber Lower Junction Parameters (lengths are in mm and angles in degrees)
352   /////////////////////////////////////////////////////////////////////////
353   static const Double_t fgkEndLadderCarbonFiberLowerJunctionLength[2];   // End Ladder Carbon Fiber Lower Up Support length 
354   static const Double_t fgkEndLadderCarbonFiberUpperJunctionLength[2];   // End Ladder Carbon Fiber Lower Down Support length 
355   static const Double_t fgkEndLadderMountingBlockPosition[2];            // End Ladder Mounting Block Position 
356   static const Int_t fgkEndLadderCarbonFiberJunctionCombiTransNumber = 3;// Number of TGeoCombiTrans 
357                                                                          // for positioning volumes in End LadderCarbon Fiber Junction Assembly 
358   void SetEndLadderCarbonFiberJunctionCombiTransMatrix(Int_t);           // Method for generating TGeoCombiTrans for 
359                                                                          // volume positioning in End Ladder Carbon Fiber Junction Assembly
360   TGeoCombiTrans *fEndLadderCarbonFiberJunctionCombiTransMatrix[fgkEndLadderCarbonFiberJunctionCombiTransNumber]; // TGeoCombiTrans roto-trans
361                                                                          // transformations for volume positioning in End Ladder 
362                                                                          // Carbon Fiber Junction Assembly
363   /////////////////////////////////////////////////////////////////////////
364   // Cooling Tube Support (lengths are in mm and angles in degrees)
365   /////////////////////////////////////////////////////////////////////////
366   static const Double_t fgkCoolingTubeSupportRmax;          // Cooling Tube Support Max Radius
367   static const Double_t fgkCoolingTubeSupportRmin;          // Cooling Tube Support Min Radius
368   static const Double_t fgkCoolingTubeSupportLength;        // Cooling Tube Support Length
369   static const Double_t fgkCoolingTubeSupportHeight;        // Cooling Tube Support Height
370   static const Double_t fgkCoolingTubeSupportWidth;         // Cooling Tube Support Width
371   static const Double_t fgkCoolingTubeSupportSeparation;    // Cooling Tube Support Separation
372   static const Double_t fgkCoolingTubeSupportToCarbonFiber; // Cooling Tube Support position respect to Carbon Fiber  
373   static const Int_t fgkCoolingTubeSupportCombiTransNumber = 2; // Number of TGeoCombiTrans 
374                                                             // for positioning volumes in Cooling Tube Support Assembly
375   void SetCoolingTubeSupportCombiTransMatrix();             // Method for generating TGeoCombiTrans for 
376                                                             // volume positioning in Cooling Tube Support Assembly
377   TGeoCombiTrans *fCoolingTubeSupportCombiTransMatrix[fgkCoolingTubeSupportCombiTransNumber]; // TGeoCombiTrans roto-trans
378                                                             // transformations for volume positioning in  
379                                                             // Cooling Tube Support Assembly
380   TGeoMedium* fSSDTubeHolderMedium;                       // Cooling Tube Support Medium
381   /////////////////////////////////////////////////////////////////////////////////
382   // Cooling Tube (lengths are in mm and angles in degrees)
383   /////////////////////////////////////////////////////////////////////////////////
384   static const Double_t fgkCoolingTubeRmax;       // Cooling Tube Max Radius 
385   static const Double_t fgkCoolingTubeRmin;       // Cooling Tube Min Radius
386   static const Double_t fgkCoolingTubeLength;     // Cooling Tube Length  
387   static const Double_t fgkCoolingTubeSeparation; // Cooling Tube Separation
388   static const Int_t    fgkCoolingTubeCombiTransNumber = 2; // Number of TGeoCombiTrans 
389                                                             // for positioning volumes in Cooling Tube Assembly
390   void SetCoolingTubeCombiTransMatrix();                    // Method for generating TGeoCombiTrans for 
391                                                             // volume positioning in Cooling Tube Assembly
392   TGeoCombiTrans *fCoolingTubeTransMatrix[fgkCoolingTubeCombiTransNumber];// TGeoCombiTrans roto-trans
393                                                             // transformations for volume positioning Cooling Tube Assembly
394   TGeoMedium* fSSDCoolingTubeWater;           // Medium for Inner Part of Cooling Tube
395   TGeoMedium* fSSDCoolingTubePhynox;          // Medium for Cooling Tube 
396   /////////////////////////////////////////////////////////////////////////
397   // SSD Mounting Block Parameters (lengths are in mm and angles in degrees)
398   /////////////////////////////////////////////////////////////////////////
399   static const Double_t fgkSSDMountingBlockLength[3];  // SSD Mounting Block Components Lengths
400   static const Double_t fgkSSDMountingBlockHeight[4];  // SSD Mounting Block Components Heights
401   static const Double_t fgkSSDMountingBlockWidth;      // SSD Mounting Block Width
402   static const Double_t fgkSSDMountingBlockHoleTrapezoidAngle;  // SSD Mounting Block Hole Trapezoid Angle
403   static const Double_t fgkSSDMountingBlockHoleTrapezoidHeight; // SSD Mounting Block Hole Trapezoid Height
404   static const Double_t fgkSSDMountingBlockHoleTrapezoidUpBasis;// SSD Mounting Block Hole Trapezoid Up Basis Length
405   static const Double_t fgkSSDMountingBlockHoleTubeLength[2];   // SSD Mounting Block Hole Tube Lengths   
406   static const Double_t fgkSSDMountingBlockHoleTubeWidth[2];    // SSD Mounting Block Hole Tube Width   
407   static const Double_t fgkSSDMountingBlockHoleRadius;          // SSD Mounting Block Hole radius  
408   static const Double_t fgkSSDMountingBlockScrewHoleEdge;       // SSD Mounting Block Screw Hole Edge  
409   static const Double_t fgkSSDMountingBlockScrewHoleHeigth;     // SSD Mounting Block Screw Hole Height  
410   static const Double_t fgkSSDMountingBlockScrewHoleRadius[2];  // SSD Mounting Block Screw Hole Radii
411   TGeoMedium* fSSDMountingBlockMedium;                        // Medium for SSD Mounting Block  
412   /////////////////////////////////////////////////////////////////////////
413   // LadderSegment 
414   /////////////////////////////////////////////////////////////////////////
415   static const Int_t fgkLadderSegmentCombiTransNumber = 5; // Number of TGeoCombiTrans 
416                                                            // for positioning volumes in Ladder Segment    
417   void SetLadderSegmentCombiTransMatrix();                 // Method for generating TGeoCombiTrans for 
418                                                            // volume positioning in Ladder Segment 
419   TGeoCombiTrans *fLadderSegmentCombiTransMatrix[fgkLadderSegmentCombiTransNumber]; // TGeoCombiTrans roto-trans
420                                                             // transformations for volume positioning in  
421                                                             // in Ladder Segment
422   /////////////////////////////////////////////////////////////////////////
423   // End LadderSegment 
424   /////////////////////////////////////////////////////////////////////////
425   static const Int_t fgkEndLadderSegmentCombiTransNumber = 4; // Number of TGeoCombiTrans 
426                                                            // for positioning volumes in End Ladder Segment    
427   void SetEndLadderSegmentCombiTransMatrix(Int_t);         // Method for generating TGeoCombiTrans for 
428                                                            // volume positioning in End Ladder Segment  
429   TGeoCombiTrans *fEndLadderSegmentCombiTransMatrix[fgkEndLadderSegmentCombiTransNumber]; // TGeoCombiTrans roto-trans
430                                                             // transformations for volume positioning in  
431                                                             // in End Ladder Segment
432   /////////////////////////////////////////////////////////////////////////
433   // LadderCables 
434   /////////////////////////////////////////////////////////////////////////
435   static const Int_t fgkLadderCableCombiTransNumber = 4; // Number of TGeoCombiTrans 
436                                                          // for positioning Ladder Cable volumes  
437   void SetLadderCableCombiTransMatrix(Int_t iLayer);     // Method for generating TGeoCombiTrans 
438                                                          // for positioning Ladder Cables volumes
439   TGeoCombiTrans *fLadderCableCombiTransMatrix[fgkLadderCableCombiTransNumber]; // TGeoCombiTrans for positioning
440                                                          // Ladder Cables volumes
441   /////////////////////////////////////////////////////////////////////////
442   // Mother Volume 
443   /////////////////////////////////////////////////////////////////////////
444   TGeoVolume *fMotherVol;                                    // Mother volume for ITS Layer5 and Layer6   
445   TGeoVolume* GetMotherVolume() const { return fMotherVol;}; // Method returning Mother Volume
446   /////////////////////////////////////////////////////////////////////////
447   // Color Display 
448   /////////////////////////////////////////////////////////////////////////
449   Int_t fColorCarbonFiber;    //  display colors
450   Int_t fColorRyton;          //  ===
451   Int_t fColorPhynox;         //  ===
452   Int_t fColorSilicon;        //  ===
453   Int_t fColorAl;             //  ===
454   Int_t fColorKapton;         //  ===
455   Int_t fColorPolyhamide;     //  ===
456   Int_t fColorStiffener;      //  ===
457   Int_t fColorEpoxy;          //  ===
458   ClassDef(AliITSv11GeometrySSD, 1)     // ITS v11 SSD geometry
459 };
460 #endif