]>
Commit | Line | Data |
---|---|---|
db486a6e | 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 | ||
73dfc864 | 7 | // $Id$ |
effd7456 | 8 | |
b7943f00 | 9 | //************************************************************************* |
effd7456 | 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 | // | |
b7943f00 | 19 | // Ludovic Gaudichet gaudichet@to.infn.it |
20 | //************************************************************************* | |
db486a6e | 21 | |
effd7456 | 22 | |
db486a6e | 23 | class TGeoVolume; |
e118532f | 24 | class TGeoPcon; |
108bd0fe | 25 | class TGeoVolumeAssembly; |
b7943f00 | 26 | class TGeoTranslation; |
db486a6e | 27 | class TGeoCombiTrans; |
28 | class TGeoArb8; | |
c789ee28 | 29 | class TGeoNode; |
b7943f00 | 30 | class TGeoMedium; |
31 | class TGeoMatrix; | |
b7943f00 | 32 | class AliITSv11GeomCableFlat; |
db486a6e | 33 | |
b7943f00 | 34 | #include "AliITSv11Geometry.h" |
db486a6e | 35 | |
c789ee28 | 36 | |
db486a6e | 37 | class AliITSv11GeometrySDD : public AliITSv11Geometry { |
38 | ||
39 | public: | |
40 | AliITSv11GeometrySDD(); | |
41 | AliITSv11GeometrySDD(Int_t debug); | |
b7943f00 | 42 | AliITSv11GeometrySDD(const AliITSv11GeometrySDD &source); |
43 | AliITSv11GeometrySDD& operator=(const AliITSv11GeometrySDD &source); | |
44 | virtual ~AliITSv11GeometrySDD(); | |
db486a6e | 45 | |
c789ee28 | 46 | // Main functions |
b7943f00 | 47 | virtual void Layer3(TGeoVolume *moth); |
48 | virtual void Layer4(TGeoVolume *moth); | |
bf210566 | 49 | virtual void ForwardLayer3(TGeoVolume *moth); |
50 | virtual void ForwardLayer4(TGeoVolume *moth); | |
e118532f | 51 | virtual void SDDCables(TGeoVolume *moth); |
52 | ||
b7943f00 | 53 | virtual Int_t GetCurrentLayLaddDet(Int_t &lay, Int_t &ladd, Int_t&det) const; |
db486a6e | 54 | |
c789ee28 | 55 | // Functions for coding, testing, debugging |
b7943f00 | 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;}; | |
108bd0fe | 71 | const char* GetSenstiveVolumeName3() const {return fgSDDsensitiveVolName3;}; |
72 | const char* GetSenstiveVolumeName4() const {return fgSDDsensitiveVolName4;}; | |
fa4639a3 | 73 | Int_t GetLay3NLadders() const; |
74 | Int_t GetLay4NLadders() const; | |
db486a6e | 75 | |
76 | private: | |
77 | ||
108bd0fe | 78 | virtual TGeoVolumeAssembly* CreateLadder(Int_t iLay); |
79 | virtual TGeoVolumeAssembly* CreateDetectorsAssembly(Int_t iLay); | |
6801b453 | 80 | virtual TGeoVolumeAssembly* CreateDetectorsAssemblyLadd2(); |
73dfc864 | 81 | virtual TGeoVolume* CreateLadderSegment(Int_t iLay, Int_t iSeg); |
108bd0fe | 82 | virtual TGeoVolumeAssembly* CreateEndLadder(Int_t iLay); |
83 | virtual TGeoVolumeAssembly* CreateEndLadderCards(Int_t iLay); | |
bf210566 | 84 | virtual TGeoVolume* CreateEndLadderCardsV(Int_t iLay); |
108bd0fe | 85 | virtual TGeoVolumeAssembly* CreateSupportRing(Int_t iLay); |
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 | ||
73dfc864 | 95 | virtual TGeoVolumeAssembly* CreateLadderFoot(); |
96 | virtual TGeoVolumeAssembly* CreateCarlosCard(Int_t iLay); | |
97 | virtual Int_t CreateLVCard(); | |
108bd0fe | 98 | virtual TGeoVolumeAssembly* CreateHVCard(Int_t iLay); |
99 | ||
100 | void CreateBasicObjects(); | |
e118532f | 101 | Double_t GetConeZ(Double_t r, Double_t refR1, Double_t refR2, |
43aefea7 | 102 | Double_t refZ1, Double_t refZ2) const; |
e118532f | 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); | |
b7943f00 | 110 | |
73dfc864 | 111 | // Check that the medium exists |
b7943f00 | 112 | virtual TGeoMedium* GetMedium(const char* mediumName); |
113 | ||
114 | // Create a TGeoCombiTrans: general rotation in phi and (dy,dz) translation | |
c789ee28 | 115 | TGeoCombiTrans* CreateCombiTrans( const char *name, |
108bd0fe | 116 | Double_t dy, Double_t dz, Double_t dphi, |
117 | Bool_t planeSym=kFALSE); | |
db486a6e | 118 | |
119 | // add (dx,dy,dz) translation to a initial TGeoCombiTrans | |
c789ee28 | 120 | void AddTranslationToCombiTrans( TGeoCombiTrans* ct, |
b7943f00 | 121 | Double_t dx=0, Double_t dy=0, Double_t dz=0) const; |
db486a6e | 122 | |
123 | // Create one side of the CF corner of the CF structure | |
8f20b5e4 | 124 | TGeoArb8* CreateLadderSide( const char *name, |
125 | Double_t dz, Double_t angle, Double_t xSign, | |
c789ee28 | 126 | Double_t L, Double_t H, Double_t l); |
db486a6e | 127 | |
b7943f00 | 128 | //---------------------------- |
129 | TGeoVolume* fPinSupport; //! pins glued to sensors | |
130 | TGeoVolume* fCoolPipeSupportL; //! half of cooling pipe support | |
131 | TGeoVolume* fCoolPipeSupportR; //! half of cooling pipe support | |
108bd0fe | 132 | TGeoVolume* fSDDsensor3; //! sensor of lay. 3 and HV cables on it |
133 | TGeoVolume* fSDDsensor4; //! sensor of lay. 4 and HV cables on it | |
b7943f00 | 134 | TGeoVolume* fBaseThermalBridge; //! Base of hybrid thermal bridge |
135 | TGeoVolume* fHybrid; //! hybrid volume | |
73dfc864 | 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 | |
b7943f00 | 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 | |
108bd0fe | 150 | AliITSv11GeomCableFlat *fDigitCableLay3B; // layer 3 cables, side B |
151 | AliITSv11GeomCableFlat *fDigitCableLay4A; // layer 4 cables, side A | |
b7943f00 | 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; // === | |
108bd0fe | 174 | Int_t fColorStesalite; // === |
b7943f00 | 175 | |
176 | //-------------------------------------- parameters for the SDD geometry | |
177 | ||
73dfc864 | 178 | static const char* fgSDDsensitiveVolName3; // sens. vol. name for lay. 3 |
179 | static const char* fgSDDsensitiveVolName4; // sens. vol. name for lay. 4 | |
b7943f00 | 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 | ||
bf210566 | 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 | ||
b7943f00 | 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 | |
4249b2ee | 212 | // static const Double_t fgkLadderSegBoxDHCorr; // To include hybrids in box |
b7943f00 | 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; // === | |
9c8369f9 | 310 | static const Double_t fgkHybCC2SensorLen; // === |
311 | static const Double_t fgkHybCC2SensorWid; // === | |
312 | static const Double_t fgkHybCC2SensorAng; // === | |
b7943f00 | 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 | ||
108bd0fe | 352 | |
effd7456 | 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 | |
108bd0fe | 372 | |
373 | // the end ladder cooling pipe and its heat exchanger | |
effd7456 | 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 | |
108bd0fe | 388 | |
389 | ||
390 | // approx dim for now - all of the following has to be checked | |
effd7456 | 391 | // once Beppe provide the drawing... |
108bd0fe | 392 | |
393 | // Carlos Card : | |
effd7456 | 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; // == | |
108bd0fe | 438 | |
439 | // HV card : | |
effd7456 | 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 | ||
73dfc864 | 483 | static const Double_t fgkCarlosSuppX1; // piece with which |
effd7456 | 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; // === | |
108bd0fe | 493 | |
73dfc864 | 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 | ||
e118532f | 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. | |
c890eba4 | 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 | |
d485d5bf | 584 | static const Double_t fgkEndLadderEarthCableR; // radius of the earth cable on End Ladders |
e118532f | 585 | static const Double_t fgkCableBendRatio; // ??? this factor account for the bending of cables |
9c8369f9 | 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 | |
e118532f | 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 | ||
73dfc864 | 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 | ||
b7943f00 | 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 | ||
73dfc864 | 618 | // parameters that can be modified |
b7943f00 | 619 | Double_t fLay3sensorZPos[6]; // Z pos of sensors in layer 3 |
620 | Double_t fLay4sensorZPos[8]; // Z pos of sensors in layer 4 | |
db486a6e | 621 | |
73dfc864 | 622 | ClassDef(AliITSv11GeometrySDD,0) // ITS v11 SDD geometry |
db486a6e | 623 | }; |
624 | ||
625 | ||
db486a6e | 626 | #endif |