/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-// Ludovic Gaudichet (Ludovic.Gaudichet@to.infn.it)
+// $Id$
+
+//*************************************************************************
+//
+// SDD geometry, based on ROOT geometrical modeler
+//
+// Its integration to the aliroot framework is done in the AliITSv11Hybrid
+// class (AliITSv11 not being functionnal so far)
+//
+// This geometry has no dependence with aliroot, you can run it with root
+// only, provided that the AliITSv11GeomCable classes are also compiled
+//
+// Ludovic Gaudichet gaudichet@to.infn.it
+//*************************************************************************
+
class TGeoVolume;
+class TGeoPcon;
+class TGeoVolumeAssembly;
+class TGeoTranslation;
class TGeoCombiTrans;
class TGeoArb8;
+class TGeoNode;
+class TGeoMedium;
+class TGeoMatrix;
+class AliITSv11GeomCableFlat;
+#include "AliITSv11Geometry.h"
class AliITSv11GeometrySDD : public AliITSv11Geometry {
public:
AliITSv11GeometrySDD();
AliITSv11GeometrySDD(Int_t debug);
- virtual ~AliITSv11GeometrySDD(){};
-
-
- virtual void SetGeomParameters();
- virtual void Layer3(TGeoVolume *Moth);
- virtual void Layer4(TGeoVolume *Moth);
-
- // Insert only the specified element
- void AddOnlyLadder3(Int_t i) { fAddOnlyLadder3=i; };
- void AddOnlyLadder4(Int_t i) { fAddOnlyLadder4=i; };
- void AddOnlySegment(Int_t i) { fAddOnlySegment=i; };
+ AliITSv11GeometrySDD(const AliITSv11GeometrySDD &source);
+ AliITSv11GeometrySDD& operator=(const AliITSv11GeometrySDD &source);
+ virtual ~AliITSv11GeometrySDD();
+
+ // Main functions
+ virtual void Layer3(TGeoVolume *moth);
+ virtual void Layer4(TGeoVolume *moth);
+ virtual void ForwardLayer3(TGeoVolume *moth);
+ virtual void ForwardLayer4(TGeoVolume *moth);
+ virtual void SDDCables(TGeoVolume *moth);
+
+ virtual Int_t GetCurrentLayLaddDet(Int_t &lay, Int_t &ladd, Int_t&det) const;
+
+ // Functions for coding, testing, debugging
+ void AddHybrids(bool b) {fAddHybrids = b;};
+ void AddSensors(bool b) {fAddSensors = b;};
+ void AddHVcables(bool b) {fAddHVcables = b;};
+ void AddCables(bool b) {fAddCables = b;};
+ void AddCoolingSyst(bool b) {fAddCoolingSyst= b;};
+
+ void CheckOverlaps(Double_t precision = 0.01);
+ void AddOnlyLay3Ladder(Int_t min,Int_t max){
+ fAddOnlyLadder3min = min; fAddOnlyLadder3max = max; };
+ void AddOnlyLay4Ladder(Int_t min,Int_t max) {
+ fAddOnlyLadder4min = min; fAddOnlyLadder4max = max;};
+ void ShowOnePiece(TGeoVolume *Moth);
+
+ virtual void SetParameters();
+ TGeoVolume* GetMotherVolume() const { return fMotherVol;};
+ const char* GetSenstiveVolumeName3() const {return fgkSDDsensitiveVolName3;};
+ const char* GetSenstiveVolumeName4() const {return fgkSDDsensitiveVolName4;};
+ Int_t GetLay3NLadders() const;
+ Int_t GetLay4NLadders() const;
private:
- // Create virtual volumes of a ladder and its detectors (inside layers 3 and 4)
- virtual TGeoVolume* CreateLay3Ladder();
- virtual TGeoVolume* CreateLay3Detectors();
- virtual TGeoVolume* CreateLay4Ladder();
- virtual TGeoVolume* CreateLay4Detectors();
-
- // Create virtual volumes inside a ladder volume
- virtual TGeoVolume* CreateLadderSegment();
- virtual TGeoVolume* CreateEndLadder(Double_t length);
- virtual TGeoVolume* CreateHybrid();
-
-
- // Create a TGeoCombiTrans, allows a general rotation in dPhi and dy,dz translations
- TGeoCombiTrans* CreateCombiTrans(const char *name, Double_t dy, Double_t dz, Double_t dphi);
+ virtual TGeoVolumeAssembly* CreateLadder(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateDetectorsAssembly(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateDetectorsAssemblyLadd2();
+ virtual TGeoVolume* CreateLadderSegment(Int_t iLay, Int_t iSeg);
+ virtual TGeoVolumeAssembly* CreateEndLadder(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateEndLadderCards(Int_t iLay);
+ virtual TGeoVolume* CreateEndLadderCardsV(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateSupportRing();
+
+ // Create some basic objects :
+ virtual void CreateSDDsensor();
+ virtual TGeoVolume* CreateHybrid(Int_t iLRSide);
+ virtual TGeoVolume* CreatePinSupport();
+ virtual TGeoVolume* CreateCoolPipeSupportL();
+ virtual TGeoVolume* CreateCoolPipeSupportR();
+ virtual TGeoVolume* CreateBaseThermalBridge();
+
+ virtual TGeoVolumeAssembly* CreateLadderFoot();
+ virtual TGeoVolumeAssembly* CreateCarlosCard(Int_t iLay);
+ virtual Int_t CreateLVCard();
+ virtual TGeoVolumeAssembly* CreateHVCard();
+
+ void CreateBasicObjects();
+ Double_t GetConeZ(Double_t r, Double_t refR1, Double_t refR2,
+ Double_t refZ1, Double_t refZ2) const;
+ TGeoPcon* CreateConeConstSection(Double_t r1max, Double_t z1,
+ Double_t r2max, Double_t z2,
+ Double_t section, Int_t nDiv=1);
+ Int_t CreateAndInsetConeCablePart(TGeoVolume *mother, Double_t angle,
+ Int_t nLay3, Int_t nLay4,
+ Double_t r1, Double_t z1,
+ Double_t r2, Double_t z2);
+
+ // Check that the medium exists
+ virtual TGeoMedium* GetMedium(const char* mediumName);
+
+ // Create a TGeoCombiTrans: general rotation in phi and (dy,dz) translation
+ TGeoCombiTrans* CreateCombiTrans( const char *name,
+ Double_t dy, Double_t dz, Double_t dphi,
+ Bool_t planeSym=kFALSE);
// add (dx,dy,dz) translation to a initial TGeoCombiTrans
- void AddTranslationTotCombiTrans(TGeoCombiTrans* ct, Double_t dx=0, Double_t dy=0, Double_t dz=0);
+ void AddTranslationToCombiTrans( TGeoCombiTrans* ct,
+ Double_t dx=0, Double_t dy=0, Double_t dz=0) const;
// Create one side of the CF corner of the CF structure
- TGeoArb8* CreateLadderSide(Double_t dz, Double_t angle, Double_t xSign,
- Double_t L, Double_t H, Double_t l);
-
- // Create de CF structure in the ladder segment
- void AddLadderCFstruct(Double_t dy, TGeoVolume* vol);
-
- // Create a pin support object
- virtual TGeoVolume* CreatePinSupport(Double_t rotY);
-
- // Create a SDD detector object
- virtual TGeoVolume* CreateSDDsensor();
-
-
- //**************************************************
-
- Int_t fAddOnlyLadder3;
- Int_t fAddOnlyLadder4;
- Int_t fAddOnlySegment;
-
-
- Double_t fLay3Rmin;
- Double_t fLay3Rmax;
- Double_t fLay3Length;
- Double_t fLay3LadderLength;
- Double_t fLay3LaddShortRadius;
- Double_t fLay3LaddLongRadius;
- Double_t fLay3DetShortRadius;
- Double_t fLay3DetLongRadius;
- Double_t fLay3LaddTopCornerEnd;
- Int_t fLay3Nladd;
- Int_t fLay3Ndet;
- Double_t fLay3ZPlusEndLength;
- Double_t fLay3sensorZPos[6];
-
-
- Double_t fLay4Rmin;
- Double_t fLay4Rmax;
- Double_t fLay4Length;
- Double_t fLay4LaddShortRadius;
- Double_t fLay4LaddLongRadius;
- Double_t fLay4DetShortRadius;
- Double_t fLay4DetLongRadius;
- Double_t fLay4LadderLength;
- Double_t fLay4LaddTopCornerEnd;
- Int_t fLay4Nladd;
- Int_t fLay4Ndet;
- Double_t fLay4ZPlusEndLength;
- Double_t fLay4sensorZPos[8];
-
- Double_t fSegmentLength;
- Double_t fLadderWidth;
- Double_t fLadderHeight;
- Double_t fLadderBeamRadius;
- Double_t fLadderLa;
- Double_t fLadderHa;
- Double_t fLadderLb;
- Double_t fLadderHb;
- Double_t fLadderl;
-
- Double_t fBottomBeamAngle;
- Double_t fBeamSidePhi;
-
- Double_t fWaferThickness;
- Double_t fWaferWidth;
- Double_t fWaferLength;
+ TGeoArb8* CreateLadderSide( const char *name,
+ Double_t dz, Double_t angle, Double_t xSign,
+ Double_t L, Double_t H, Double_t l);
+
+ //----------------------------
+ TGeoVolume* fPinSupport; //! pins glued to sensors
+ TGeoVolume* fCoolPipeSupportL; //! half of cooling pipe support
+ TGeoVolume* fCoolPipeSupportR; //! half of cooling pipe support
+ TGeoVolume* fSDDsensor3; //! sensor of lay. 3 and HV cables on it
+ TGeoVolume* fSDDsensor4; //! sensor of lay. 4 and HV cables on it
+ TGeoVolume* fBaseThermalBridge; //! Base of hybrid thermal bridge
+ TGeoVolume* fHybrid; //! hybrid volume
+ TGeoVolumeAssembly *fLadderFoot;//! ladder foot in stesalite
+ TGeoVolumeAssembly *fCardLVR; //! low voltage card, right
+ TGeoVolumeAssembly *fCardLVL; //! low voltage card, left
+ TGeoVolumeAssembly *fCardHV; //! high voltage card
+ TGeoVolumeAssembly *fCardCarlos;//! end-ladder CARLOS card
+ TGeoVolumeAssembly *fRaccordoL; //! link between cooling tubes at end ladder
+ TGeoVolume* fCommonVol[2]; //! some common vol. used in several places
+ TGeoMatrix* fCommonTr[2]; //! some common transformations
+
+ static const Int_t fgkNladdSegCommonVol = 19; // Number of vol.
+ TGeoVolume* fLaddSegCommonVol[fgkNladdSegCommonVol];//! volumes in ladder
+ TGeoMatrix* fLaddSegCommonTr[fgkNladdSegCommonVol]; //! their transf.
+
+ AliITSv11GeomCableFlat *fDigitCableLay3A; // layer 3 cables, side A
+ AliITSv11GeomCableFlat *fDigitCableLay3B; // layer 3 cables, side B
+ AliITSv11GeomCableFlat *fDigitCableLay4A; // layer 4 cables, side A
+ AliITSv11GeomCableFlat *fDigitCableLay4B; // layer 4 cables, side B
+
+ TGeoVolume *fMotherVol; //! mother volume given in LayerX() funct.
+ bool fAddHybrids; // Insert hybrids ? (default TRUE)
+ bool fAddSensors; // Insert sensors ? (default TRUE)
+ bool fAddHVcables; // Insert HV cables ? (default TRUE)
+ bool fAddCables; // Insert cables ? (default TRUE)
+ bool fAddCoolingSyst; // Insert cooling system ? (default TRUE)
+ bool fCoolingOn; // Insert cooling fluid ? (default TRUE)
+ Int_t fAddOnlyLadder3min; // first ladder index
+ Int_t fAddOnlyLadder3max; // last ladder index
+ Int_t fAddOnlyLadder4min; // first ladder index
+ Int_t fAddOnlyLadder4max; // last ladder index
+ Int_t fColorCarbonFiber; // display colors
+ Int_t fColorRyton; // ===
+ Int_t fColorPhynox; // ===
+ Int_t fColorSilicon; // ===
+ Int_t fColorAl; // ===
+ Int_t fColorPolyhamide; // ===
+ Int_t fColorGlass; // ===
+ Int_t fColorSMD; // ===
+ Int_t fColorSMDweld; // ===
+ Int_t fColorStesalite; // ===
+
+ //-------------------------------------- parameters for the SDD geometry
+
+ static const char* fgkSDDsensitiveVolName3; // sens. vol. name for lay. 3
+ static const char* fgkSDDsensitiveVolName4; // sens. vol. name for lay. 4
+
+ static const Int_t fgkLay3Nladd; // 14
+ static const Int_t fgkLay3Ndet; // 6
+ static const Double_t fgkLay3Rmin; // min. radius of tube
+ static const Double_t fgkLay3Rmax; // max. radius of tube
+ static const Double_t fgkLay3Length; // length of layer 3 tube
+ static const Double_t fgkLay3LadderLength; // tot. length of ladder
+ static const Double_t fgkLay3DetShortRadius; // radius from beam axis
+ static const Double_t fgkLay3DetLongRadius; // radius from beam axis
+ static const Double_t fgkLay3LaddTopCornerEnd; // Ends of ladder 3
+ static const Double_t fgkLay3ZPlusEndLength; // ===
+
+ static const Int_t fgkLay4Nladd; // 22
+ static const Int_t fgkLay4Ndet; // 8
+ static const Double_t fgkLay4Rmin; // min. radius of tube
+ static const Double_t fgkLay4Rmax; // max. radius of tube
+ static const Double_t fgkLay4Length; // length of layer 4 tube
+ static const Double_t fgkLay4LadderLength; // tot. length of ladder
+ static const Double_t fgkLay4DetShortRadius; // radius from beam axis
+ static const Double_t fgkLay4DetLongRadius; // radius from beam axis
+ static const Double_t fgkLay4LaddTopCornerEnd; // Ends of ladder 3
+ static const Double_t fgkLay4ZPlusEndLength; // ===
+
+ static const Double_t fgkEndLaddCardsShortRadiusLay3; // ref radius of end ladder cards
+ static const Double_t fgkEndLaddCardsShortRadiusLay4; // ref radius of end ladder cards
+ static const Double_t fgkDistEndLaddCardsLadd; // dist. between U cooling tube and ladder
+
+ static const Double_t fgkSegmentLength; // length of 1 ladder seg.
+ static const Double_t fgkLadderWidth; // carbon fiber structure
+ static const Double_t fgkLadderHeight; // including bottom beam
+ static const Double_t fgkLadderSegBoxDW; // To include hybrids in box
+ static const Double_t fgkLadderSegBoxDH; // To include hybrids in box
+ // static const Double_t fgkLadderSegBoxDHCorr; // To include hybrids in box
+
+ static const Double_t fgkLadderBeamRadius; // carbon fiber beam radius
+ static const Double_t fgkLadderLa; // parameters defining
+ static const Double_t fgkLadderHa; // the V side shape
+ static const Double_t fgkLadderLb; // of the carbon
+ static const Double_t fgkLadderHb; // fiber ladder
+ static const Double_t fgkLadderl; // ============
+
+ static const Double_t fgkBottomBeamAngle; // bottom beam angle
+ static const Double_t fgkBeamSidePhi; // side beam angle
+
+ static const Double_t fgkWaferThickness; // sensor thickness (Y)
+ static const Double_t fgkWaferWidth; // width (X)
+ static const Double_t fgkWaferLength; // length (Z)
+ static const Double_t fgkWaferThickSens; // sensitive volume thich
+ static const Double_t fgkWaferWidthSens; // sens. volume width
+ static const Double_t fgkWaferLengthSens; // sens. volume length
+
+ static const Double_t fgkSensorGlassLX; // dimensions of glass
+ static const Double_t fgkSensorGlassLZ; // (on which pins are
+ static const Double_t fgkSensorGlassLY; // glued)
+ static const Double_t fgkGlassDXOnSensor; // Position of glass
+ static const Double_t fgkGlassDZOnSensor; // on sensor
+
+ static const Double_t fgkLadWaferSep; // ladder-sensor dist.
+ static const Double_t fgkPinR; // pins radius
+ static const Double_t fgkPinSuppWidth; // ===
+ static const Double_t fgkPinSuppHeight; // ===
+ static const Double_t fgkPinSuppRmax; // Parameters for pin
+ static const Double_t fgkPinSuppLength; // supports on
+ static const Double_t fgkPinSuppThickness; // carbon fiber
+ static const Double_t fgkPinSuppConeAngle; // ladder
+ static const Double_t fgkPinDXminOnSensor; // ===
+ static const Double_t fgkPinPinDDXOnSensor; // ===
+ static const Double_t fgkPinDYOnSensor; // ===
+
+ static const Double_t fgkCoolPipeInnerDiam; // Water cooling
+ static const Double_t fgkCoolPipeOuterDiam; // pipe
+ static const Double_t fgkLay3CoolPipeSuppH; // Heights of water
+ static const Double_t fgkLay4CoolPipeSuppH; // pipes on ladders
+ static const Double_t fgkCoolPipeSuppHeight; // ===
+ static const Double_t fgkCoolPipeSuppMaxLength; // ===
+ static const Double_t fgkCoolPipeSuppWidthExt; // Parameters for
+ static const Double_t fgkCoolPipeSuppWidthIn; // cooling pipes
+ static const Double_t fgkCoolPipeSuppHoleDiam; // on carbon fiber
+ static const Double_t fgkCoolPipeSuppFulWidth; // ladder
+ static const Double_t fgkCoolPipeSuppTongW; // ===
+ static const Double_t fgkCoolPipeSuppAngle; // ===
+ static const Double_t fgkCoolPipeSuppSlitL; // ===
+ static const Double_t fgkCoolPipeSuppAxeDist; // ===
+
+ static const Double_t fgkBTBthick; // BTB for :
+ static const Double_t fgkBTBlength; // Base of Thermal Bridge
+ static const Double_t fgkBTBwidth; // =====================
+ static const Double_t fgkBTBaxisAtoBottom; // axis A is the same as
+ static const Double_t fgkBTBaxisAtoBase; // the cooling pipe axis
+ static const Double_t fgkRadiusAminBTB; // ===
+ static const Double_t fgkRadiusBminBTB; // ===
+ static const Double_t fgkBTBHoleLength; // ===
+ static const Double_t fgkBTBHolewidth; // ===
+ static const Double_t fgkBTBHoleRefX; // ===
+ static const Double_t fgkBTBHoleRefY; // ===
+
+ static const Double_t fgkHybridLength; // Hybrid parameters :
+ static const Double_t fgkHybridWidth; // ===
+ static const Double_t fgkHybridAngle; // Hybrid on ladder in phi
+
+ static const Double_t fgkHybRndHoleRad; // ===
+ static const Double_t fgkHybRndHoleZ; // ===
+ static const Double_t fgkHybRndHoleX; // ===
+
+ static const Double_t fgkHybFLlowHoleDZ; // FLlow : low flex
+ static const Double_t fgkHybFLlowHolePasDX; // ===
+ static const Double_t fgkHybFLlowHoleAmbDX; // ===
+ // (center of ships to the border)
+ static const Double_t fgkHybFLlowChipZ4; // Z1 to Z4 : position
+ static const Double_t fgkHybFLlowChipZ3; // in z of the chip
+ static const Double_t fgkHybFLlowChipZ2; // centers
+ static const Double_t fgkHybFLlowChipZ1; // ===
+ static const Double_t fgkHybFLlowPasX; // Pascal center X pos
+ static const Double_t fgkHybFLlowAmbX; // Ambra center X pos
+ static const Double_t fgkHybChipsDZ; // Z dimension of chips
+ static const Double_t fgkHybPascalDX; // X dimension of Pascal
+ static const Double_t fgkHybAmbraDX; // X dimension of Ambra
+ static const Double_t fgkHybFLUpperWidth; // bFLUpper : upper flex
+ static const Double_t fgkHybFLUpperLength; // ===
+ static const Double_t fgkHybFLUpperAlDZ; // ===
+ static const Double_t fgkHybFLUpperAldx; // ===
+
+ static const Double_t fgkHybridThBridgeThick; // Thicknesses :
+ static const Double_t fgkHybAlThick; // ===
+ static const Double_t fgkHybUpThick; // ===
+ static const Double_t fgkHybGlueScrnThick; // ===
+ static const Double_t fgkHybGlueLowThick; // ===
+ static const Double_t fgkHybGlueUpThick; // ===
+ static const Double_t fgkHybAlCCThick; // ===
+ static const Double_t fgkHybUpCCThick; // ===
+ static const Double_t fgkHybCC2SensorLen; // ===
+ static const Double_t fgkHybCC2SensorWid; // ===
+ static const Double_t fgkHybCC2SensorAng; // ===
+ static const Double_t fgkHybChipThick; // ===
+ static const Double_t fgkHybGlueAgThick; // ===
+ static const Double_t fgkHybUnderNiThick; // ===
+ static const Int_t fgkNHybSMD; // Number of SMD
+ static const Double_t fgkHybSMDposX[25]; // X pos. of SMD
+ static const Double_t fgkHybSMDposZ[25]; // Z pos. of SMD
+ static const Double_t fgkHybSMDmiddleW; // SMD width
+ static const Double_t fgkHybSMDmiddleL; // SMD length
+ static const Double_t fgkHybSMDendW; // end SMD witdh
+ static const Double_t fgkHybSMDendL; // end SMD length
+ static const Double_t fgkHybSMDheight; // SMD height
+
+ static const Double_t fgkDigitCablWidth; // Digital
+ static const Double_t fgkDigitCablAlThick; // cables
+ static const Double_t fgkDigitCablPolyThick; // ===
+
+ //HV cables
+ static const Double_t fgkWaHVcableAlThick; // Wrap-around
+ static const Double_t fgkWaHVcablePolyThick; // High Voltage
+ static const Double_t fgkWaHVcableLength; // cables
+ static const Double_t fgkWaHVcableWitdh; // (on sensor)
+ static const Double_t fgkWaHVcableDW; // ===
+
+ static const Double_t fgkTransitHVAlThick; // Transition
+ static const Double_t fgkTransitHVPolyThick; // High Voltage
+ static const Double_t fgkTransitHVHeadLX; // cables
+ static const Double_t fgkTransitHVHeadLZ; // (on sensor)
+ static const Double_t fgkTransitHVBondingLZ; // ===
+ static const Double_t fgkTransitHVtailLength; // ===
+ static const Double_t fgkTransitHVtailWidth; // ===
+ static const Double_t fgkTransitHVtailXpos; // ===
+ static const Double_t fgkTransitHVsideLZ; // ===
+ static const Double_t fgkTransitHVsideLeftZ; // ===
+ static const Double_t fgkTransitHVsideRightZ; // ===
+
+ static const Double_t fgkLongHVcablePolyThick; // Long High
+ static const Double_t fgkLongHVcableAlThick; // Voltage
+ static const Double_t fgkLongHVcableSeparation; // cables
+
+
+ static const Double_t fgkRubyDX; // ruby dx with respect to the middle (to ladder z axis)
+ static const Double_t fgkRubyZladd3; // Z of ruby, ladder 3
+ static const Double_t fgkRubyZladd4; // Z of ruby, ladder 4
+
+ static const Double_t fgkLadFootX; // Length of ladder foot
+ static const Double_t fgkLadFootZ; // width
+ static const Double_t fgkLadFootY; // thickness
+ static const Double_t fgkLadFootMiddleY; // thickness in the middle part
+ static const Double_t fgkLadBox1X; // size in X
+ static const Double_t fgkLadFingerPrintX; // size in X
+ static const Double_t fgkLadFingerPrintY ; // size in Y
+ static const Double_t fgkLadFingerPrintBorder; // size in X
+ static const Double_t fgkRubyCageHoleZ; // size in Z
+ static const Double_t fgkRubyCageHoleX; // size in X
+ static const Double_t fgkRubyCageHoleY; // size in Y
+ static const Double_t fgkRubyCageAxisShift; // shift in X
+ static const Double_t fgkScrewM4diam; // M4 screw standard diameter
+ static const Double_t fgkRubyScrewShiftToCenterY; // screw placement
+ static const Double_t fgkRubyHoleDiam; // guess what
+
+// the end ladder cooling pipe and its heat exchanger
+ static const Double_t fgkEndLadPipeUlengthLay3; // length in Z of the U cooling tube
+ static const Double_t fgkEndLadPipeUlengthLay4; // length in Z of the U cooling tube
+ static const Double_t fgkEndLadPipeUwidth; // width
+ static const Double_t fgkEndLadPipeRadius; // radius
+ static const Double_t fgkEndLadPipeInnerDiam; // InnerDiam
+ static const Double_t fgkEndLadPipeOuterDiam; // OuterDiam
+
+ static const Double_t fgkEndLadPipeArmZLay3; // the arms of the U cooling tube
+ static const Double_t fgkEndLadPipeArmZLay4; // (rectangular part surrounding the)
+ static const Double_t fgkEndLadPipeArmX; // the tube
+ static const Double_t fgkEndLadPipeArmY; // X, Y : size in the correxponding axis
+ static const Double_t fgkEndLadPipeArmBoxDY; // shift in Y of the arms from the axis
+ static const Double_t fgkEndLadPipeArmBoxDX; // shift in X of the arms from the axis
+ static const Double_t fgkEndLadPipeArmZpos; // position with respect to tube
+
+
+ // approx dim for now - all of the following has to be checked
+ // once Beppe provide the drawing...
+
+ // Carlos Card :
+ static const Double_t fgkLVcardX; // size of the card itself in X
+ static const Double_t fgkLVcardY; // size of the card itself in Y
+ static const Double_t fgkLVcardZ; // size of the card itself in Z
+ static const Double_t fgkLVcardCuZ; // Cu thickness
+
+ static const Double_t fgkLVChip0X; // chip #0
+ static const Double_t fgkLVChip0Y; // ...
+ static const Double_t fgkLVChip0Z; // thickness without si layer
+ static const Double_t fgkLVChip0SiZ; // Si layer thickness
+ static const Double_t fgkLVChip0PosX; // Position with respect to the card
+ static const Double_t fgkLVChip0PosY; // Position with respect to the card
+
+ static const Double_t fgkLVChip1X; // same
+ static const Double_t fgkLVChip1Y; // conventions
+ static const Double_t fgkLVChip1Z; // as
+ static const Double_t fgkLVChip1SiZ; // chip 0
+ static const Double_t fgkLVChip1PosX; // ==
+ static const Double_t fgkLVChip1PosY; // ==
+
+ static const Double_t fgkLVChip2X; // same
+ static const Double_t fgkLVChip2Y; // conventions
+ static const Double_t fgkLVChip2Z; // as
+ static const Double_t fgkLVChip2SiZ; // chip 0
+ static const Double_t fgkLVChip2PosX; // ==
+ static const Double_t fgkLVChip2PosY; // ==
+
+ static const Double_t fgkLVChip3X; // same
+ static const Double_t fgkLVChip3Y; // conventions
+ static const Double_t fgkLVChip3Z; // as
+ static const Double_t fgkLVChip3SiZ; // chip 0
+ static const Double_t fgkLVChip3PosX; // ==
+ static const Double_t fgkLVChip3PosY; // ==
+
+ static const Double_t fgkLVcoolX1; // pieces of alCu12
+ static const Double_t fgkLVcoolY1; // for heat exchange
+ static const Double_t fgkLVcoolZ1; // with the cooling tube
+
+ static const Double_t fgkLVcoolX2; // X,Y,Z are
+ static const Double_t fgkLVcoolY2; // dimensions
+ static const Double_t fgkLVcoolZ2; // of the pieces
+
+ static const Double_t fgkLVcoolX3; // ==
+ static const Double_t fgkLVcoolY3; // ==
+ static const Double_t fgkLVcoolPosY; // ==
+
+ // HV card :
+ static const Double_t fgkHVCardCeramX; // size in X of the ceramic card
+ static const Double_t fgkHVCardCeramY; // size in Y
+ static const Double_t fgkHVCardCeramZ; // size in Z
+
+ static const Double_t fgkHVCardCapa1X; // size in X of the capa 1
+ static const Double_t fgkHVCardCapa1Z; // size in Z
+ static const Double_t fgkHVCardCapa1Ymid; // size of the middle part
+ static const Double_t fgkHVCardCapa1Yend; // ...
+ static const Double_t fgkHVCardCapa1PosX; // position on the card
+ static const Double_t fgkHVCardCapa1PosY; // position on the card
+
+ static const Double_t fgkHVCardCapa2X; // idem for second type capa
+ static const Double_t fgkHVCardCapa2Z; // love me
+ static const Double_t fgkHVCardCapa2Ymid; // ...
+ static const Double_t fgkHVCardCapa2Yend; // tender,
+ static const Double_t fgkHVCardCapa2PosX; // ...
+ static const Double_t fgkHVCardCapa2PosY; // love me true
+
+ static const Double_t fgkHVCardCapa3Xmid; // idem for third type capa
+ static const Double_t fgkHVCardCapa3Xend; // ===
+ static const Double_t fgkHVCardCapa3Z; // ===
+ static const Double_t fgkHVCardCapa3Y; // ===
+
+ static const Double_t fgkHVCardCapa3PosX1; // this capa is placed
+ static const Double_t fgkHVCardCapa3PosX2; // in several positions
+ static const Double_t fgkHVCardCapa3PosX3; // ...
+ static const Double_t fgkHVCardCapa3PosX4; // ===
+ static const Double_t fgkHVCardCapa3PosX5; // ===
+ static const Double_t fgkHVCardCapa3PosY1; // ===
+ static const Double_t fgkHVCardCapa3PosY2; // ===
+ static const Double_t fgkHVCardCapa3PosY3; // ===
+
+ static const Double_t fgkHVCardCool1X; // cooling
+ static const Double_t fgkHVCardCool1Y; // pieces for
+ static const Double_t fgkHVCardCool1Z; // heat exchange
+ static const Double_t fgkHVCardCool2X; // with
+ static const Double_t fgkHVCardCool2Y; // cooling U tube
+ static const Double_t fgkHVCardCool2Z; // ===
+ static const Double_t fgkHVCardCool3X; // ===
+ static const Double_t fgkHVCardCool3Y; // ===
+ static const Double_t fgkHVCardCool3Z; // ===
+ static const Double_t fgkHVCardCoolDY; // ===
+
+ static const Double_t fgkCarlosSuppX1; // piece with which
+ static const Double_t fgkCarlosSuppY1; // the carlos card
+ static const Double_t fgkCarlosSuppX2; // is fixed
+ static const Double_t fgkCarlosSuppY2; // ===
+ static const Double_t fgkCarlosSuppZ; // ===
+ static const Double_t fgkCarlosSuppAngle; // ===
+ static const Double_t fgkCarlosSuppX3; // ===
+ static const Double_t fgkCarlosSuppY3; // ===
+ static const Double_t fgkCarlosSuppZ3; // ===
+ static const Double_t fgkCarlosSuppTopLen; // ===
+
+ // screws fixing the board on the U tube
+ static const Double_t fgkLittleScrewHeadR; // screws fixing boards
+ static const Double_t fgkLittleScrewHeadH; // Value to be checked
+ static const Double_t fgkLittleScrewR; // ===
+ static const Double_t fgkShiftLittleScrewLV; // ===
+ static const Double_t fgkLittleLVScrewHeadR; // ===
+
+ // CARLOS board
+ static const Double_t fgkCarlosCardX1; // length (first part of Carlos card)
+ static const Double_t fgkCarlosCardY1; // thickness
+ static const Double_t fgkCarlosCardZ1; // width
+ static const Double_t fgkCarlosCardCuY; // thickness of Cu layer (strips)
+ static const Double_t fgkCarlosCardX2; // length (2nd part of Carlos card)
+ static const Double_t fgkCarlosCardZ2; // width
+
+ static const Double_t fgkCarlosCardChipSiThick; // Carlos Chip thicknes - value to be checked
+ static const Double_t fgkCarlosCardShift; // (value to be checked) shift in z w.r.t. heat bridge
+
+ // size and position of various chips on carlos end-ladder board
+ static const Double_t fgkCarlosU1X; // chip size in X
+ static const Double_t fgkCarlosU1Y; // chip size in Y
+ static const Double_t fgkCarlosU1Z; // chip size in Z
+ static const Double_t fgkCarlosU1posX; // position in X
+ static const Double_t fgkCarlosU1posZ; // position in Z
+
+ static const Double_t fgkCarlosU2X; // chip size in X
+ static const Double_t fgkCarlosU2Y; // chip size in Y
+ static const Double_t fgkCarlosU2Z; // chip size in Z
+ static const Double_t fgkCarlosU2posX; // position in X
+ static const Double_t fgkCarlosU2posZ; // position in Z
+
+ static const Double_t fgkCarlosU3X; // same convention
+ static const Double_t fgkCarlosU3Y; // ===
+ static const Double_t fgkCarlosU3Z; // ===
+ static const Double_t fgkCarlosU3posX; // ===
+ static const Double_t fgkCarlosU3posZ; // ===
+
+ // U4 like U3
+ static const Double_t fgkCarlosU4posX; // same convention
+ static const Double_t fgkCarlosU4posZ; // ===
+
+ static const Double_t fgkCarlosU17X; // same convention
+ static const Double_t fgkCarlosU17Y; // ===
+ static const Double_t fgkCarlosU17Z; // ===
+ static const Double_t fgkCarlosU17posX; // ===
+ static const Double_t fgkCarlosU17posZ; // ===
+
+ static const Double_t fgkCarlosU35X; // same convention
+ static const Double_t fgkCarlosU35Y; // ===
+ static const Double_t fgkCarlosU35Z; // ===
+ static const Double_t fgkCarlosU35posX; // ===
+ static const Double_t fgkCarlosU35posZ; // ===
+
+ static const Double_t fgkCarlosU36X; // same convention
+ static const Double_t fgkCarlosU36Y; // ===
+ static const Double_t fgkCarlosU36Z; // ===
+ static const Double_t fgkCarlosU36posX; // ===
+ static const Double_t fgkCarlosU36posZ; // ===
- Double_t fHybridLength;
- Double_t fHybridWidth;
-
- Double_t fLadWaferSep;
- Double_t fPinSuppWidth;
- Double_t fPinSuppHeight;
- Double_t fPinSuppRmax;
- Double_t fPinR;
- Double_t fPinSuppLength;
- Double_t fPinSuppThickness;
- Double_t fPinSuppConeAngle;
-
- ClassDef(AliITSv11GeometrySDD,1) // ITS v11 SDD geometry
+ static const Double_t fgkCarlosQZ1X; // same convention
+ static const Double_t fgkCarlosQZ1Y; // look more thick than design number (0.7) ! to be checked
+ static const Double_t fgkCarlosQZ1Z; // to be checked
+ static const Double_t fgkCarlosQZ1posX; // to be checked
+ static const Double_t fgkCarlosQZ1posZ; // to be checked
+
+ // some pieces at the end of the carbon fiber ladder
+ static const Double_t fgkCoolPipeLay3Len; // value to be checked
+ static const Double_t fgkCoolPipeLay4Len; // ===
+ static const Double_t fgkHVguideX1; // ===
+ static const Double_t fgkHVguideY1; // ===
+ static const Double_t fgkHVguideZ1; // ===
+ static const Double_t fgkHVguideZ2; // ===
+ static const Double_t fgkHVguideDX; // ===
+ static const Double_t fgkHVguideSuppFullZ; // ===
+
+ // Cooling connector between phynox and plastic cooling water tubes
+ static const Double_t fgkConnectorCoolTubeRmin; // internal radius
+ static const Double_t fgkConnectorCoolTubeR1; // value to be checked
+ static const Double_t fgkConnectorCoolTubeL1; // ===
+ static const Double_t fgkConnectorCoolTubeR2; // ===
+ static const Double_t fgkConnectorCoolTubeL2; // ===
+ static const Double_t fgkConnectorCoolTubeR3; // ===
+ static const Double_t fgkConnectorCoolTubeL3; // ===
+
+ // parameters for coding SDD cables on SDD and SSD cones
+ static const Double_t fgkSectionCuPerMod; // area of copper per mod.
+ static const Double_t fgkSectionPlastPerMod; // area of plast per mod.
+ static const Double_t fgkSectionGlassPerMod; // area of optical fiber per mod.
+ static const Double_t fgkSectionCoolPolyuEL; // area of cooling tubes on End Ladders
+ static const Double_t fgkSectionCoolWaterEL; // area of cooling water on End Ladders
+ static const Double_t fgkEndLadderEarthCableR; // radius of the earth cable on End Ladders
+ static const Double_t fgkCableBendRatio; // ??? this factor account for the bending of cables
+ static const Double_t fgkHybridAlFoilThick; // Thickness of Al foil on hybrid side
+ static const Double_t fgkHybridAlFoilWide; // Width of Al foil on hybrid side
+ static const Double_t fgkHybridAlFoilSide; // Side length of Al foil on hybrid side
+
+ static const Double_t fgkConeSDDr1; // define SDD cone slope and pos
+ static const Double_t fgkConeSDDr2; // define SDD cone slope and pos
+ static const Double_t fgkConeSDDz1; // define SDD cone slope and pos
+ static const Double_t fgkConeSDDz2; // define SDD cone slope and pos
+
+ static const Double_t fgkSDDCableR1; // ??? // part 1 of "cable cone"
+ static const Double_t fgkSDDCableR2; // ??? // part 1/2 of "cable cone"
+ static const Double_t fgkSDDCableR3; // ??? // part 2 of "cable cone"
+
+ static const Double_t fgkSDDCableDZint; // length of intermediate cylinder
+ static const Double_t fgkSDDCableR5; // third part of "cable cone"
+ static const Double_t fgkSDDCableZ5; // third part of "cable cone"
+
+
+
+ // distance from the heat bridge center to the card center :
+ static const Double_t fgkCarlosCard2HeatBridge;// distance from the heat bridge center to the card center
+
+ static const Double_t fgkmu; // 1 micron, or more for debugging
+
+ // calculated parameters
+ Double_t fLay3LadderUnderSegDH; // To include HVcables in box
+ Double_t fLay4LadderUnderSegDH; // To include HVcables in box
+ Double_t fLay3LaddShortRadius; // ladder 3 to beam axis radius
+ Double_t fLay3LaddLongRadius; // ladder 3 to beam axis radius
+ Double_t fLay4LaddShortRadius; // ladder 4 to beam axis radius
+ Double_t fLay4LaddLongRadius; // ladder 4 to beam axis radius
+
+ // parameters that can be modified
+ Double_t fLay3sensorZPos[6]; // Z pos of sensors in layer 3
+ Double_t fLay4sensorZPos[8]; // Z pos of sensors in layer 4
+
+ ClassDef(AliITSv11GeometrySDD,0) // ITS v11 SDD geometry
};
-
#endif