Added option for different binning of DCAxy axis in THnSparse. Same width for all...
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySDD.h
1 #ifndef ALIITSV11GEOMETRYSDD_H
2 #define ALIITSV11GEOMETRYSDD_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 //*************************************************************************
10 //
11 // SDD geometry, based on ROOT geometrical modeler
12 //
13 // Its integration to the aliroot framework is done in the AliITSv11Hybrid
14 // class (AliITSv11 not being functionnal so far)
15 //
16 // This geometry has no dependence with aliroot, you can run it with root
17 // only, provided that the AliITSv11GeomCable classes are also compiled
18 //
19 // Ludovic Gaudichet                                   gaudichet@to.infn.it
20 //*************************************************************************
21
22
23 class TGeoVolume;
24 class TGeoPcon;
25 class TGeoVolumeAssembly;
26 class TGeoTranslation;
27 class TGeoCombiTrans;
28 class TGeoArb8;
29 class TGeoNode;
30 class TGeoMedium;
31 class TGeoMatrix;
32 class AliITSv11GeomCableFlat;
33
34 #include "AliITSv11Geometry.h"
35
36
37 class AliITSv11GeometrySDD : public AliITSv11Geometry {
38
39  public:
40   AliITSv11GeometrySDD();
41   AliITSv11GeometrySDD(Int_t debug);
42   AliITSv11GeometrySDD(const AliITSv11GeometrySDD &source);
43   AliITSv11GeometrySDD& operator=(const AliITSv11GeometrySDD &source);
44   virtual ~AliITSv11GeometrySDD();
45
46   // Main functions
47   virtual void  Layer3(TGeoVolume *moth);
48   virtual void  Layer4(TGeoVolume *moth);
49   virtual void  ForwardLayer3(TGeoVolume *moth);
50   virtual void  ForwardLayer4(TGeoVolume *moth);
51   virtual void  SDDCables(TGeoVolume *moth);
52
53   virtual Int_t GetCurrentLayLaddDet(Int_t &lay, Int_t &ladd, Int_t&det) const;
54
55   // Functions for coding, testing, debugging 
56   void          AddHybrids(bool b)     {fAddHybrids    = b;};
57   void          AddSensors(bool b)     {fAddSensors    = b;};
58   void          AddHVcables(bool b)    {fAddHVcables   = b;};
59   void          AddCables(bool b)      {fAddCables     = b;};
60   void          AddCoolingSyst(bool b) {fAddCoolingSyst= b;};
61
62   void          CheckOverlaps(Double_t precision = 0.01);
63   void          AddOnlyLay3Ladder(Int_t min,Int_t max){
64                   fAddOnlyLadder3min = min; fAddOnlyLadder3max = max; };
65   void          AddOnlyLay4Ladder(Int_t min,Int_t max) {
66                   fAddOnlyLadder4min = min; fAddOnlyLadder4max = max;};
67   void          ShowOnePiece(TGeoVolume *Moth);
68
69   virtual void  SetParameters();
70   TGeoVolume*   GetMotherVolume() const { return fMotherVol;};
71   const char*   GetSenstiveVolumeName3() const {return fgkSDDsensitiveVolName3;};
72   const char*   GetSenstiveVolumeName4() const {return fgkSDDsensitiveVolName4;};
73   Int_t         GetLay3NLadders() const;
74   Int_t         GetLay4NLadders() const;
75
76   private:
77
78   virtual TGeoVolumeAssembly*  CreateLadder(Int_t iLay);
79   virtual TGeoVolumeAssembly*  CreateDetectorsAssembly(Int_t iLay);
80   virtual TGeoVolumeAssembly*  CreateDetectorsAssemblyLadd2();
81   virtual TGeoVolume*          CreateLadderSegment(Int_t iLay, Int_t iSeg);
82   virtual TGeoVolumeAssembly*  CreateEndLadder(Int_t iLay);
83   virtual TGeoVolumeAssembly*  CreateEndLadderCards(Int_t iLay);
84   virtual TGeoVolume*          CreateEndLadderCardsV(Int_t iLay);
85   virtual TGeoVolumeAssembly*  CreateSupportRing();
86
87   // Create some basic objects : 
88   virtual void                 CreateSDDsensor();
89   virtual TGeoVolume*          CreateHybrid(Int_t iLRSide);
90   virtual TGeoVolume*          CreatePinSupport();
91   virtual TGeoVolume*          CreateCoolPipeSupportL();
92   virtual TGeoVolume*          CreateCoolPipeSupportR();
93   virtual TGeoVolume*          CreateBaseThermalBridge();
94
95   virtual TGeoVolumeAssembly*  CreateLadderFoot();
96   virtual TGeoVolumeAssembly*  CreateCarlosCard(Int_t iLay);
97   virtual Int_t                CreateLVCard();
98   virtual TGeoVolumeAssembly*  CreateHVCard();
99
100   void                         CreateBasicObjects();
101   Double_t                     GetConeZ(Double_t r, Double_t refR1, Double_t refR2,
102                                         Double_t refZ1, Double_t refZ2) const;
103   TGeoPcon*                    CreateConeConstSection(Double_t r1max, Double_t z1,
104                                                       Double_t r2max, Double_t z2,
105                                                       Double_t section, Int_t nDiv=1);
106   Int_t CreateAndInsetConeCablePart(TGeoVolume *mother, Double_t angle,
107                                     Int_t nLay3, Int_t nLay4,
108                                     Double_t r1, Double_t z1,
109                                     Double_t r2, Double_t z2);
110
111   // Check that the medium exists
112   virtual TGeoMedium* GetMedium(const char* mediumName);
113
114   // Create a TGeoCombiTrans: general rotation in phi and (dy,dz) translation 
115   TGeoCombiTrans* CreateCombiTrans( const char *name,
116                                     Double_t dy, Double_t dz, Double_t dphi,
117                                     Bool_t planeSym=kFALSE);
118
119   // add (dx,dy,dz) translation to a initial TGeoCombiTrans
120   void AddTranslationToCombiTrans( TGeoCombiTrans* ct,
121                           Double_t dx=0, Double_t dy=0, Double_t dz=0) const;
122
123   // Create one side of the CF corner of the CF structure
124   TGeoArb8* CreateLadderSide( const char *name,
125                               Double_t dz, Double_t angle, Double_t xSign,
126                               Double_t L, Double_t H, Double_t l);
127
128   //----------------------------
129   TGeoVolume* fPinSupport;        //!  pins glued to sensors
130   TGeoVolume* fCoolPipeSupportL;  //!  half of cooling pipe support
131   TGeoVolume* fCoolPipeSupportR;  //!  half of cooling pipe support
132   TGeoVolume* fSDDsensor3;        //!  sensor of lay. 3 and HV cables on it
133   TGeoVolume* fSDDsensor4;        //!  sensor of lay. 4 and HV cables on it
134   TGeoVolume* fBaseThermalBridge; //!  Base of hybrid thermal bridge
135   TGeoVolume* fHybrid;            //!  hybrid volume
136   TGeoVolumeAssembly *fLadderFoot;//!  ladder foot in stesalite
137   TGeoVolumeAssembly *fCardLVR;   //!  low voltage card, right
138   TGeoVolumeAssembly *fCardLVL;   //!  low voltage card, left
139   TGeoVolumeAssembly *fCardHV;    //!  high voltage card
140   TGeoVolumeAssembly *fCardCarlos;//!  end-ladder CARLOS card
141   TGeoVolumeAssembly *fRaccordoL; //!  link between cooling tubes at end ladder
142   TGeoVolume* fCommonVol[2];      //!  some common vol. used in several places
143   TGeoMatrix* fCommonTr[2];       //!  some common transformations
144
145   static const Int_t fgkNladdSegCommonVol = 19;       //  Number of vol.
146   TGeoVolume* fLaddSegCommonVol[fgkNladdSegCommonVol];//! volumes in ladder
147   TGeoMatrix* fLaddSegCommonTr[fgkNladdSegCommonVol]; //! their transf.
148
149   AliITSv11GeomCableFlat *fDigitCableLay3A; // layer 3 cables, side A
150   AliITSv11GeomCableFlat *fDigitCableLay3B; // layer 3 cables, side B
151   AliITSv11GeomCableFlat *fDigitCableLay4A; // layer 4 cables, side A
152   AliITSv11GeomCableFlat *fDigitCableLay4B; // layer 4 cables, side B
153
154   TGeoVolume *fMotherVol;    //! mother volume given in LayerX() funct.
155   bool  fAddHybrids;         //  Insert hybrids ?   (default TRUE)
156   bool  fAddSensors;         //  Insert sensors ?   (default TRUE)
157   bool  fAddHVcables;        //  Insert HV cables ? (default TRUE)
158   bool  fAddCables;          //  Insert cables ?    (default TRUE)
159   bool  fAddCoolingSyst;     //  Insert cooling system ? (default TRUE)
160   bool  fCoolingOn;          //  Insert cooling fluid ?  (default TRUE)
161   Int_t fAddOnlyLadder3min;  //  first ladder index
162   Int_t fAddOnlyLadder3max;  //  last  ladder index
163   Int_t fAddOnlyLadder4min;  //  first ladder index
164   Int_t fAddOnlyLadder4max;  //  last  ladder index
165   Int_t fColorCarbonFiber;   //  display colors
166   Int_t fColorRyton;         //  ===
167   Int_t fColorPhynox;        //  ===
168   Int_t fColorSilicon;       //  ===
169   Int_t fColorAl;            //  ===
170   Int_t fColorPolyhamide;    //  ===
171   Int_t fColorGlass;         //  ===
172   Int_t fColorSMD;           //  ===
173   Int_t fColorSMDweld;       //  ===
174   Int_t fColorStesalite;     //  ===
175
176   //--------------------------------------  parameters for the SDD geometry
177
178   static const char* fgkSDDsensitiveVolName3;      // sens. vol. name for lay. 3
179   static const char* fgkSDDsensitiveVolName4;      // sens. vol. name for lay. 4
180
181   static const Int_t    fgkLay3Nladd;             // 14
182   static const Int_t    fgkLay3Ndet;              //  6
183   static const Double_t fgkLay3Rmin;              // min. radius of tube
184   static const Double_t fgkLay3Rmax;              // max. radius of tube
185   static const Double_t fgkLay3Length;            // length of layer 3 tube
186   static const Double_t fgkLay3LadderLength;      // tot. length of ladder
187   static const Double_t fgkLay3DetShortRadius;    // radius from beam axis
188   static const Double_t fgkLay3DetLongRadius;     // radius from beam axis
189   static const Double_t fgkLay3LaddTopCornerEnd;  // Ends of ladder 3
190   static const Double_t fgkLay3ZPlusEndLength;    // ===
191
192   static const Int_t    fgkLay4Nladd;             // 22
193   static const Int_t    fgkLay4Ndet;              //  8
194   static const Double_t fgkLay4Rmin;              // min. radius of tube
195   static const Double_t fgkLay4Rmax;              // max. radius of tube
196   static const Double_t fgkLay4Length;            // length of layer 4 tube
197   static const Double_t fgkLay4LadderLength;      // tot. length of ladder
198   static const Double_t fgkLay4DetShortRadius;    // radius from beam axis
199   static const Double_t fgkLay4DetLongRadius;     // radius from beam axis
200   static const Double_t fgkLay4LaddTopCornerEnd;  // Ends of ladder 3
201   static const Double_t fgkLay4ZPlusEndLength;    // ===
202
203   static const Double_t fgkEndLaddCardsShortRadiusLay3; // ref radius of end ladder cards
204   static const Double_t fgkEndLaddCardsShortRadiusLay4; // ref radius  of end ladder cards
205   static const Double_t fgkDistEndLaddCardsLadd;        // dist. between U cooling tube and ladder
206
207   static const Double_t fgkSegmentLength;         // length of 1 ladder seg.
208   static const Double_t fgkLadderWidth;           // carbon fiber structure 
209   static const Double_t fgkLadderHeight;          // including bottom beam
210   static const Double_t fgkLadderSegBoxDW;        // To include hybrids in box
211   static const Double_t fgkLadderSegBoxDH;        // To include hybrids in box
212   //  static const Double_t fgkLadderSegBoxDHCorr;    // To include hybrids in box
213
214   static const Double_t fgkLadderBeamRadius;      // carbon fiber beam radius
215   static const Double_t fgkLadderLa;              // parameters defining
216   static const Double_t fgkLadderHa;              //   the V side shape
217   static const Double_t fgkLadderLb;              //   of the carbon
218   static const Double_t fgkLadderHb;              //   fiber ladder
219   static const Double_t fgkLadderl;               //   ============
220
221   static const Double_t fgkBottomBeamAngle;       // bottom beam angle
222   static const Double_t fgkBeamSidePhi;           // side beam angle
223
224   static const Double_t fgkWaferThickness;        // sensor thickness (Y)
225   static const Double_t fgkWaferWidth;            // width (X)
226   static const Double_t fgkWaferLength;           // length (Z)
227   static const Double_t fgkWaferThickSens;        // sensitive volume thich
228   static const Double_t fgkWaferWidthSens;        // sens. volume width
229   static const Double_t fgkWaferLengthSens;       // sens. volume length
230
231   static const Double_t fgkSensorGlassLX;         // dimensions of glass
232   static const Double_t fgkSensorGlassLZ;         //  (on which pins are
233   static const Double_t fgkSensorGlassLY;         //   glued)
234   static const Double_t fgkGlassDXOnSensor;       // Position of glass
235   static const Double_t fgkGlassDZOnSensor;       //   on sensor
236
237   static const Double_t fgkLadWaferSep;           // ladder-sensor dist.
238   static const Double_t fgkPinR;                  // pins radius
239   static const Double_t fgkPinSuppWidth;          // ===
240   static const Double_t fgkPinSuppHeight;         // ===
241   static const Double_t fgkPinSuppRmax;           // Parameters for pin
242   static const Double_t fgkPinSuppLength;         //   supports on
243   static const Double_t fgkPinSuppThickness;      //   carbon fiber
244   static const Double_t fgkPinSuppConeAngle;      //   ladder
245   static const Double_t fgkPinDXminOnSensor;      // ===
246   static const Double_t fgkPinPinDDXOnSensor;     // ===
247   static const Double_t fgkPinDYOnSensor;         // ===
248
249   static const Double_t fgkCoolPipeInnerDiam;     // Water cooling
250   static const Double_t fgkCoolPipeOuterDiam;     //   pipe
251   static const Double_t fgkLay3CoolPipeSuppH;     // Heights of water
252   static const Double_t fgkLay4CoolPipeSuppH;     //   pipes on ladders
253   static const Double_t fgkCoolPipeSuppHeight;    // ===
254   static const Double_t fgkCoolPipeSuppMaxLength; // ===
255   static const Double_t fgkCoolPipeSuppWidthExt;  // Parameters for
256   static const Double_t fgkCoolPipeSuppWidthIn;   //  cooling pipes
257   static const Double_t fgkCoolPipeSuppHoleDiam;  //  on carbon fiber
258   static const Double_t fgkCoolPipeSuppFulWidth;  //  ladder 
259   static const Double_t fgkCoolPipeSuppTongW;     // ===
260   static const Double_t fgkCoolPipeSuppAngle;     // ===
261   static const Double_t fgkCoolPipeSuppSlitL;     // ===
262   static const Double_t fgkCoolPipeSuppAxeDist;   // ===
263
264   static const Double_t fgkBTBthick;              // BTB for :
265   static const Double_t fgkBTBlength;             // Base of Thermal Bridge
266   static const Double_t fgkBTBwidth;              // =====================
267   static const Double_t fgkBTBaxisAtoBottom;      // axis A is the same as
268   static const Double_t fgkBTBaxisAtoBase;        // the cooling pipe axis
269   static const Double_t fgkRadiusAminBTB;         // ===
270   static const Double_t fgkRadiusBminBTB;         // ===
271   static const Double_t fgkBTBHoleLength;         // ===
272   static const Double_t fgkBTBHolewidth;          // ===
273   static const Double_t fgkBTBHoleRefX;           // ===
274   static const Double_t fgkBTBHoleRefY;           // ===
275
276   static const Double_t fgkHybridLength;          // Hybrid parameters :
277   static const Double_t fgkHybridWidth;           // ===
278   static const Double_t fgkHybridAngle;           // Hybrid on ladder in phi
279
280   static const Double_t fgkHybRndHoleRad;         // ===
281   static const Double_t fgkHybRndHoleZ;           // ===
282   static const Double_t fgkHybRndHoleX;           // ===
283
284   static const Double_t fgkHybFLlowHoleDZ;        // FLlow : low flex
285   static const Double_t fgkHybFLlowHolePasDX;     // ===
286   static const Double_t fgkHybFLlowHoleAmbDX;     // ===
287   // (center of ships to the border)
288   static const Double_t fgkHybFLlowChipZ4;        // Z1 to Z4 : position
289   static const Double_t fgkHybFLlowChipZ3;        //   in z of the chip
290   static const Double_t fgkHybFLlowChipZ2;        //   centers
291   static const Double_t fgkHybFLlowChipZ1;        // ===
292   static const Double_t fgkHybFLlowPasX;          // Pascal center X pos
293   static const Double_t fgkHybFLlowAmbX;          // Ambra center X pos
294   static const Double_t fgkHybChipsDZ;            // Z dimension of chips
295   static const Double_t fgkHybPascalDX;           // X dimension of Pascal
296   static const Double_t fgkHybAmbraDX;            // X dimension of Ambra
297   static const Double_t fgkHybFLUpperWidth;       // bFLUpper : upper flex
298   static const Double_t fgkHybFLUpperLength;      // ===
299   static const Double_t fgkHybFLUpperAlDZ;        // ===
300   static const Double_t fgkHybFLUpperAldx;        // ===
301
302   static const Double_t fgkHybridThBridgeThick;   // Thicknesses :
303   static const Double_t fgkHybAlThick;            // ===
304   static const Double_t fgkHybUpThick;            // ===
305   static const Double_t fgkHybGlueScrnThick;      // ===
306   static const Double_t fgkHybGlueLowThick;       // ===
307   static const Double_t fgkHybGlueUpThick;        // ===
308   static const Double_t fgkHybAlCCThick;          // ===
309   static const Double_t fgkHybUpCCThick;          // ===
310   static const Double_t fgkHybCC2SensorLen;       // ===
311   static const Double_t fgkHybCC2SensorWid;       // ===
312   static const Double_t fgkHybCC2SensorAng;       // ===
313   static const Double_t fgkHybChipThick;          // ===
314   static const Double_t fgkHybGlueAgThick;        // ===
315   static const Double_t fgkHybUnderNiThick;       // ===
316   static const Int_t    fgkNHybSMD;               // Number of SMD
317   static const Double_t fgkHybSMDposX[25];        // X pos. of SMD
318   static const Double_t fgkHybSMDposZ[25];        // Z pos. of SMD
319   static const Double_t fgkHybSMDmiddleW;         // SMD width
320   static const Double_t fgkHybSMDmiddleL;         // SMD length
321   static const Double_t fgkHybSMDendW;            // end SMD witdh
322   static const Double_t fgkHybSMDendL;            // end SMD length
323   static const Double_t fgkHybSMDheight;          // SMD height
324
325   static const Double_t fgkDigitCablWidth;        // Digital
326   static const Double_t fgkDigitCablAlThick;      // cables
327   static const Double_t fgkDigitCablPolyThick;    // ===
328
329   //HV cables
330   static const Double_t fgkWaHVcableAlThick;      // Wrap-around
331   static const Double_t fgkWaHVcablePolyThick;    //   High Voltage
332   static const Double_t fgkWaHVcableLength;       //   cables
333   static const Double_t fgkWaHVcableWitdh;        //   (on sensor)
334   static const Double_t fgkWaHVcableDW;           // ===
335
336   static const Double_t fgkTransitHVAlThick;      // Transition
337   static const Double_t fgkTransitHVPolyThick;    //   High Voltage
338   static const Double_t fgkTransitHVHeadLX;       //   cables
339   static const Double_t fgkTransitHVHeadLZ;       //   (on sensor)
340   static const Double_t fgkTransitHVBondingLZ;    // ===
341   static const Double_t fgkTransitHVtailLength;   // ===
342   static const Double_t fgkTransitHVtailWidth;    // ===
343   static const Double_t fgkTransitHVtailXpos;     // ===
344   static const Double_t fgkTransitHVsideLZ;       // ===
345   static const Double_t fgkTransitHVsideLeftZ;    // ===
346   static const Double_t fgkTransitHVsideRightZ;   // ===
347
348   static const Double_t fgkLongHVcablePolyThick;  // Long High
349   static const Double_t fgkLongHVcableAlThick;    //   Voltage
350   static const Double_t fgkLongHVcableSeparation; //   cables
351
352
353   static const Double_t fgkRubyDX;                // ruby dx with respect to the middle (to ladder z axis)
354   static const Double_t fgkRubyZladd3;            // Z of ruby, ladder 3
355   static const Double_t fgkRubyZladd4;            // Z of ruby, ladder 4
356
357   static const Double_t fgkLadFootX;              // Length of ladder foot
358   static const Double_t fgkLadFootZ;              // width 
359   static const Double_t fgkLadFootY;              // thickness
360   static const Double_t fgkLadFootMiddleY;        // thickness in the middle part
361   static const Double_t fgkLadBox1X;              // size in X
362   static const Double_t fgkLadFingerPrintX;       // size in X
363   static const Double_t fgkLadFingerPrintY ;      // size in Y
364   static const Double_t fgkLadFingerPrintBorder;  // size in X
365   static const Double_t fgkRubyCageHoleZ;         // size in Z
366   static const Double_t fgkRubyCageHoleX;         // size in X
367   static const Double_t fgkRubyCageHoleY;         // size in Y
368   static const Double_t fgkRubyCageAxisShift;     // shift in X
369   static const Double_t fgkScrewM4diam;           // M4 screw standard diameter 
370   static const Double_t fgkRubyScrewShiftToCenterY; // screw placement 
371   static const Double_t fgkRubyHoleDiam;          // guess what
372
373 // the end ladder cooling pipe and its heat exchanger
374   static const Double_t fgkEndLadPipeUlengthLay3; // length in Z of the U cooling tube
375   static const Double_t fgkEndLadPipeUlengthLay4; // length in Z of the U cooling tube
376   static const Double_t fgkEndLadPipeUwidth;      // width
377   static const Double_t fgkEndLadPipeRadius;      // radius
378   static const Double_t fgkEndLadPipeInnerDiam;   // InnerDiam
379   static const Double_t fgkEndLadPipeOuterDiam;   // OuterDiam
380
381   static const Double_t fgkEndLadPipeArmZLay3;    // the arms of the U cooling tube
382   static const Double_t fgkEndLadPipeArmZLay4;    // (rectangular part surrounding the)
383   static const Double_t fgkEndLadPipeArmX;        // the tube
384   static const Double_t fgkEndLadPipeArmY;        // X, Y : size in the correxponding axis
385   static const Double_t fgkEndLadPipeArmBoxDY;    // shift in Y of the arms from the axis
386   static const Double_t fgkEndLadPipeArmBoxDX;    // shift in X of the arms from the axis
387   static const Double_t fgkEndLadPipeArmZpos;     // position with respect to tube  
388
389
390   // approx dim for now - all of the following has to be checked
391   // once Beppe provide the drawing...
392
393   // Carlos Card :
394   static const Double_t fgkLVcardX;              // size of the card itself in X
395   static const Double_t fgkLVcardY;              // size of the card itself in Y
396   static const Double_t fgkLVcardZ;              // size of the card itself in Z
397   static const Double_t fgkLVcardCuZ;            // Cu thickness
398
399   static const Double_t fgkLVChip0X;             // chip #0
400   static const Double_t fgkLVChip0Y;             // ...
401   static const Double_t fgkLVChip0Z;             //  thickness without si layer
402   static const Double_t fgkLVChip0SiZ;           // Si layer thickness
403   static const Double_t fgkLVChip0PosX;          // Position with respect to the card
404   static const Double_t fgkLVChip0PosY;          // Position with respect to the card
405
406   static const Double_t fgkLVChip1X;             // same
407   static const Double_t fgkLVChip1Y;             // conventions
408   static const Double_t fgkLVChip1Z;             // as
409   static const Double_t fgkLVChip1SiZ;           // chip 0
410   static const Double_t fgkLVChip1PosX;          // ==
411   static const Double_t fgkLVChip1PosY;          // ==
412
413   static const Double_t fgkLVChip2X;             // same
414   static const Double_t fgkLVChip2Y;             // conventions
415   static const Double_t fgkLVChip2Z;             // as
416   static const Double_t fgkLVChip2SiZ;           // chip 0
417   static const Double_t fgkLVChip2PosX;          // ==
418   static const Double_t fgkLVChip2PosY;          // ==
419
420   static const Double_t fgkLVChip3X;             // same
421   static const Double_t fgkLVChip3Y;             // conventions
422   static const Double_t fgkLVChip3Z;             // as
423   static const Double_t fgkLVChip3SiZ;           // chip 0
424   static const Double_t fgkLVChip3PosX;          // ==
425   static const Double_t fgkLVChip3PosY;          // ==
426
427   static const Double_t fgkLVcoolX1;             // pieces of alCu12
428   static const Double_t fgkLVcoolY1;             // for heat exchange
429   static const Double_t fgkLVcoolZ1;             // with the cooling tube
430
431   static const Double_t fgkLVcoolX2;             // X,Y,Z are
432   static const Double_t fgkLVcoolY2;             // dimensions
433   static const Double_t fgkLVcoolZ2;             // of the pieces
434
435   static const Double_t fgkLVcoolX3;             // ==
436   static const Double_t fgkLVcoolY3;             // ==
437   static const Double_t fgkLVcoolPosY;           // ==
438
439   // HV card :
440   static const Double_t fgkHVCardCeramX;         // size in X of the ceramic card
441   static const Double_t fgkHVCardCeramY;         // size in Y
442   static const Double_t fgkHVCardCeramZ;         // size in Z
443
444   static const Double_t fgkHVCardCapa1X;         // size in X of the capa 1
445   static const Double_t fgkHVCardCapa1Z;         // size in Z
446   static const Double_t fgkHVCardCapa1Ymid;      // size of the middle part
447   static const Double_t fgkHVCardCapa1Yend;      // ...
448   static const Double_t fgkHVCardCapa1PosX;      // position on the card
449   static const Double_t fgkHVCardCapa1PosY;      // position on the card
450
451   static const Double_t fgkHVCardCapa2X;         // idem for second type capa
452   static const Double_t fgkHVCardCapa2Z;         //   love me
453   static const Double_t fgkHVCardCapa2Ymid;      //   ...
454   static const Double_t fgkHVCardCapa2Yend;      //   tender,
455   static const Double_t fgkHVCardCapa2PosX;      //   ...
456   static const Double_t fgkHVCardCapa2PosY;      //   love me true
457
458   static const Double_t fgkHVCardCapa3Xmid;      //  idem for third type capa
459   static const Double_t fgkHVCardCapa3Xend;      //  ===
460   static const Double_t fgkHVCardCapa3Z;         //  ===
461   static const Double_t fgkHVCardCapa3Y;         //  ===
462
463   static const Double_t fgkHVCardCapa3PosX1;     // this capa is placed
464   static const Double_t fgkHVCardCapa3PosX2;     // in several positions
465   static const Double_t fgkHVCardCapa3PosX3;     // ...
466   static const Double_t fgkHVCardCapa3PosX4;     // ===
467   static const Double_t fgkHVCardCapa3PosX5;     // ===
468   static const Double_t fgkHVCardCapa3PosY1;     // ===
469   static const Double_t fgkHVCardCapa3PosY2;     // ===
470   static const Double_t fgkHVCardCapa3PosY3;     // ===
471
472   static const Double_t fgkHVCardCool1X;         // cooling
473   static const Double_t fgkHVCardCool1Y;         // pieces for
474   static const Double_t fgkHVCardCool1Z;         // heat exchange
475   static const Double_t fgkHVCardCool2X;         // with
476   static const Double_t fgkHVCardCool2Y;         // cooling U tube
477   static const Double_t fgkHVCardCool2Z;         // ===
478   static const Double_t fgkHVCardCool3X;         // ===
479   static const Double_t fgkHVCardCool3Y;         // ===
480   static const Double_t fgkHVCardCool3Z;         // ===
481   static const Double_t fgkHVCardCoolDY;         // ===
482
483   static const Double_t fgkCarlosSuppX1;         // piece with which
484   static const Double_t fgkCarlosSuppY1;         // the carlos card
485   static const Double_t fgkCarlosSuppX2;         // is fixed
486   static const Double_t fgkCarlosSuppY2;         // ===
487   static const Double_t fgkCarlosSuppZ;          // ===
488   static const Double_t fgkCarlosSuppAngle;      //  ===
489   static const Double_t fgkCarlosSuppX3;         // ===
490   static const Double_t fgkCarlosSuppY3;         // ===
491   static const Double_t fgkCarlosSuppZ3;         // ===
492   static const Double_t fgkCarlosSuppTopLen;     // ===
493
494   // screws fixing the board on the U tube
495   static const Double_t fgkLittleScrewHeadR;     // screws fixing boards
496   static const Double_t fgkLittleScrewHeadH;     // Value to be checked
497   static const Double_t fgkLittleScrewR;         // ===
498   static const Double_t fgkShiftLittleScrewLV;   // ===
499   static const Double_t fgkLittleLVScrewHeadR;   // ===
500
501   // CARLOS board
502   static const Double_t fgkCarlosCardX1;         // length (first part of Carlos card)
503   static const Double_t fgkCarlosCardY1;         // thickness
504   static const Double_t fgkCarlosCardZ1;         // width 
505   static const Double_t fgkCarlosCardCuY;        // thickness of Cu layer (strips)
506   static const Double_t fgkCarlosCardX2;         // length (2nd part of Carlos card)
507   static const Double_t fgkCarlosCardZ2;         // width 
508
509   static const Double_t fgkCarlosCardChipSiThick;  // Carlos Chip thicknes - value to be checked
510   static const Double_t fgkCarlosCardShift;        // (value to be checked) shift in z w.r.t. heat bridge 
511
512   // size and position of various chips on carlos end-ladder board
513   static const Double_t fgkCarlosU1X;            // chip size in X
514   static const Double_t fgkCarlosU1Y;            // chip size in Y
515   static const Double_t fgkCarlosU1Z;            // chip size in Z
516   static const Double_t fgkCarlosU1posX;         // position in X
517   static const Double_t fgkCarlosU1posZ;         // position in Z
518
519   static const Double_t fgkCarlosU2X;            // chip size in X
520   static const Double_t fgkCarlosU2Y;            // chip size in Y
521   static const Double_t fgkCarlosU2Z;            // chip size in Z
522   static const Double_t fgkCarlosU2posX;         // position in X
523   static const Double_t fgkCarlosU2posZ;         // position in Z
524   
525   static const Double_t fgkCarlosU3X;            // same convention
526   static const Double_t fgkCarlosU3Y;            // ===
527   static const Double_t fgkCarlosU3Z;            // ===
528   static const Double_t fgkCarlosU3posX;         // ===
529   static const Double_t fgkCarlosU3posZ;         // ===
530
531   // U4 like U3  
532   static const Double_t fgkCarlosU4posX;         // same convention
533   static const Double_t fgkCarlosU4posZ;         // ===
534
535   static const Double_t fgkCarlosU17X;           // same convention
536   static const Double_t fgkCarlosU17Y;           // ===
537   static const Double_t fgkCarlosU17Z;           // ===
538   static const Double_t fgkCarlosU17posX;        // ===
539   static const Double_t fgkCarlosU17posZ;        // ===
540   
541   static const Double_t fgkCarlosU35X;           // same convention
542   static const Double_t fgkCarlosU35Y;           // ===
543   static const Double_t fgkCarlosU35Z;           // ===
544   static const Double_t fgkCarlosU35posX;        // ===
545   static const Double_t fgkCarlosU35posZ;        // ===
546
547   static const Double_t fgkCarlosU36X;           // same convention
548   static const Double_t fgkCarlosU36Y;           // ===
549   static const Double_t fgkCarlosU36Z;           // ===
550   static const Double_t fgkCarlosU36posX;        // ===
551   static const Double_t fgkCarlosU36posZ;        // ===
552   
553   static const Double_t fgkCarlosQZ1X;           // same convention
554   static const Double_t fgkCarlosQZ1Y;           // look more thick than design number (0.7) ! to be checked
555   static const Double_t fgkCarlosQZ1Z;           // to be checked
556   static const Double_t fgkCarlosQZ1posX;        // to be checked
557   static const Double_t fgkCarlosQZ1posZ;        // to be checked
558
559   // some pieces at the end of the carbon fiber ladder
560   static const Double_t fgkCoolPipeLay3Len;  // value to be checked
561   static const Double_t fgkCoolPipeLay4Len;  // ===
562   static const Double_t fgkHVguideX1;    // ===
563   static const Double_t fgkHVguideY1;    // ===
564   static const Double_t fgkHVguideZ1;    // ===
565   static const Double_t fgkHVguideZ2;    // ===
566   static const Double_t fgkHVguideDX;    // ===
567   static const Double_t fgkHVguideSuppFullZ;    // ===
568   
569   // Cooling connector between phynox and plastic cooling water tubes
570   static const Double_t fgkConnectorCoolTubeRmin; // internal radius
571   static const Double_t fgkConnectorCoolTubeR1; // value to be checked
572   static const Double_t fgkConnectorCoolTubeL1;  // ===
573   static const Double_t fgkConnectorCoolTubeR2;  // ===
574   static const Double_t fgkConnectorCoolTubeL2;  // ===
575   static const Double_t fgkConnectorCoolTubeR3;  // ===
576   static const Double_t fgkConnectorCoolTubeL3;  // ===
577
578   // parameters for coding SDD cables on SDD and SSD cones
579   static const Double_t fgkSectionCuPerMod;    // area of copper per mod.
580   static const Double_t fgkSectionPlastPerMod; // area of plast per mod.
581   static const Double_t fgkSectionGlassPerMod; // area of optical fiber per mod.
582   static const Double_t fgkSectionCoolPolyuEL; // area of cooling tubes on End Ladders
583   static const Double_t fgkSectionCoolWaterEL; // area of cooling water on End Ladders
584   static const Double_t fgkEndLadderEarthCableR; // radius of the earth cable on End Ladders
585   static const Double_t fgkCableBendRatio; // ??? this factor account for the bending of cables
586   static const Double_t fgkHybridAlFoilThick; // Thickness of Al foil on hybrid side
587   static const Double_t fgkHybridAlFoilWide; // Width of Al foil on hybrid side
588   static const Double_t fgkHybridAlFoilSide; // Side length of Al foil on hybrid side
589
590   static const Double_t fgkConeSDDr1; // define SDD cone slope and pos
591   static const Double_t fgkConeSDDr2; // define SDD cone slope and pos
592   static const Double_t fgkConeSDDz1; // define SDD cone slope and pos
593   static const Double_t fgkConeSDDz2; // define SDD cone slope and pos
594
595   static const Double_t fgkSDDCableR1; // ??? // part 1 of "cable cone"
596   static const Double_t fgkSDDCableR2; // ??? // part 1/2 of "cable cone"
597   static const Double_t fgkSDDCableR3; // ??? // part 2 of "cable cone"
598
599   static const Double_t fgkSDDCableDZint; // length of intermediate cylinder
600   static const Double_t fgkSDDCableR5; // third part of "cable cone"
601   static const Double_t fgkSDDCableZ5; // third part of "cable cone"
602
603
604
605   // distance from the heat bridge center to the card center :
606   static const Double_t fgkCarlosCard2HeatBridge;// distance from the heat bridge center to the card center
607
608   static const Double_t fgkmu;  // 1 micron, or more for debugging
609
610   // calculated parameters
611   Double_t fLay3LadderUnderSegDH;  // To include HVcables in box
612   Double_t fLay4LadderUnderSegDH;  // To include HVcables in box
613   Double_t fLay3LaddShortRadius;   // ladder 3 to beam axis radius
614   Double_t fLay3LaddLongRadius;    // ladder 3 to beam axis radius
615   Double_t fLay4LaddShortRadius;   // ladder 4 to beam axis radius
616   Double_t fLay4LaddLongRadius;    // ladder 4 to beam axis radius
617
618   // parameters that can be modified
619   Double_t fLay3sensorZPos[6];     // Z pos of sensors in layer 3
620   Double_t fLay4sensorZPos[8];     // Z pos of sensors in layer 4
621
622   ClassDef(AliITSv11GeometrySDD,0) // ITS v11 SDD geometry
623 };
624
625
626 #endif