Line data Source code
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 0 : void AddHybrids(bool b) {fAddHybrids = b;};
57 0 : void AddSensors(bool b) {fAddSensors = b;};
58 0 : void AddHVcables(bool b) {fAddHVcables = b;};
59 0 : void AddCables(bool b) {fAddCables = b;};
60 0 : 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 0 : fAddOnlyLadder3min = min; fAddOnlyLadder3max = max; };
65 : void AddOnlyLay4Ladder(Int_t min,Int_t max) {
66 0 : fAddOnlyLadder4min = min; fAddOnlyLadder4max = max;};
67 : void ShowOnePiece(TGeoVolume *Moth);
68 :
69 : virtual void SetParameters();
70 0 : TGeoVolume* GetMotherVolume() const { return fMotherVol;};
71 2 : const char* GetSenstiveVolumeName3() const {return fgkSDDsensitiveVolName3;};
72 2 : 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 = 20; // 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 116 : ClassDef(AliITSv11GeometrySDD,0) // ITS v11 SDD geometry
623 : };
624 :
625 :
626 : #endif
|