/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
+// $Id$
//*************************************************************************
//
class TGeoVolume;
+class TGeoPcon;
class TGeoVolumeAssembly;
class TGeoTranslation;
class TGeoCombiTrans;
class TGeoNode;
class TGeoMedium;
class TGeoMatrix;
-class AliITSgeom;
class AliITSv11GeomCableFlat;
#include "AliITSv11Geometry.h"
// Main functions
virtual void Layer3(TGeoVolume *moth);
virtual void Layer4(TGeoVolume *moth);
- virtual Int_t ExportSensorGeometry(AliITSgeom *geom, Int_t iLaySDD,
- Int_t startMod);
+ 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
virtual void SetParameters();
TGeoVolume* GetMotherVolume() const { return fMotherVol;};
- const char* GetSenstiveVolumeName3() const {return fgSDDsensitiveVolName3;};
- const char* GetSenstiveVolumeName4() const {return fgSDDsensitiveVolName4;};
+ const char* GetSenstiveVolumeName3() const {return fgkSDDsensitiveVolName3;};
+ const char* GetSenstiveVolumeName4() const {return fgkSDDsensitiveVolName4;};
Int_t GetLay3NLadders() const;
Int_t GetLay4NLadders() const;
virtual TGeoVolumeAssembly* CreateLadder(Int_t iLay);
virtual TGeoVolumeAssembly* CreateDetectorsAssembly(Int_t iLay);
- virtual TGeoVolumeAssembly* CreateLadderSegment(Int_t iLay, Int_t iSeg);
+ 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 TGeoVolumeAssembly* CreateSupportRing(Int_t iLay);
+ virtual TGeoVolume* CreateEndLadderCardsV(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateSupportRing();
// Create some basic objects :
virtual void CreateSDDsensor();
virtual TGeoVolume* CreateCoolPipeSupportR();
virtual TGeoVolume* CreateBaseThermalBridge();
-/* virtual TGeoVolumeAssembly* CreateCarlosCard(Int_t iLay); */
- virtual TGeoVolumeAssembly* CreateLVCard(Int_t orientation);
- virtual TGeoVolumeAssembly* CreateHVCard(Int_t iLay);
+ virtual TGeoVolumeAssembly* CreateLadderFoot();
+ virtual TGeoVolumeAssembly* CreateCarlosCard(Int_t iLay);
+ virtual Int_t CreateLVCard();
+ virtual TGeoVolumeAssembly* CreateHVCard();
void CreateBasicObjects();
-
-
- // Check that the nedium exists
+ 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
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,
+ TGeoArb8* CreateLadderSide( const char *name,
+ Double_t dz, Double_t angle, Double_t xSign,
Double_t L, Double_t H, Double_t l);
//----------------------------
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
//-------------------------------------- parameters for the SDD geometry
- static const char* fgSDDsensitiveVolName3; // sens. vol. name for lay. 3
- static const char* fgSDDsensitiveVolName4; // sens. vol. name for lay. 4
+ 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 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 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 Double_t fgkHVCardCool3Z; // ===
static const Double_t fgkHVCardCoolDY; // ===
- static const Double_t fgkCarlosSuppX1; // piece on which
+ 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 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; // ===
+
+ 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 fLay4LaddShortRadius; // ladder 4 to beam axis radius
Double_t fLay4LaddLongRadius; // ladder 4 to beam axis radius
- // parameters that be modified
+ // 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,2) // ITS v11 SDD geometry
+ ClassDef(AliITSv11GeometrySDD,0) // ITS v11 SDD geometry
};