]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11GeometrySDD.h
update of the tracker
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySDD.h
index 8df9f90d84abf5b12731de63f6e4f349baad8b0d..05ca1449680750ddd929162cefa17f7ca7d1c5c6 100755 (executable)
@@ -21,6 +21,7 @@
 
 
 class TGeoVolume;
+class TGeoPcon;
 class TGeoVolumeAssembly;
 class TGeoTranslation;
 class TGeoCombiTrans;
@@ -28,7 +29,6 @@ class TGeoArb8;
 class TGeoNode;
 class TGeoMedium;
 class TGeoMatrix;
-class AliITSgeom;
 class AliITSv11GeomCableFlat;
 
 #include "AliITSv11Geometry.h"
@@ -46,8 +46,10 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   // 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 
@@ -66,8 +68,8 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
 
   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;
 
@@ -75,10 +77,12 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
 
   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 TGeoVolumeAssembly*  CreateSupportRing(Int_t iLay);
+  virtual TGeoVolume*          CreateEndLadderCardsV(Int_t iLay);
+  virtual TGeoVolumeAssembly*  CreateSupportRing();
 
   // Create some basic objects : 
   virtual void                 CreateSDDsensor();
@@ -91,10 +95,18 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   virtual TGeoVolumeAssembly*  CreateLadderFoot();
   virtual TGeoVolumeAssembly*  CreateCarlosCard(Int_t iLay);
   virtual Int_t                CreateLVCard();
-  virtual TGeoVolumeAssembly*  CreateHVCard(Int_t iLay);
+  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);
@@ -109,7 +121,8 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
                          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);
 
   //----------------------------
@@ -129,7 +142,7 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   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.
+  static const Int_t fgkNladdSegCommonVol = 20;       //  Number of vol.
   TGeoVolume* fLaddSegCommonVol[fgkNladdSegCommonVol];//! volumes in ladder
   TGeoMatrix* fLaddSegCommonTr[fgkNladdSegCommonVol]; //! their transf.
 
@@ -162,8 +175,8 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
 
   //--------------------------------------  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
@@ -187,11 +200,16 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   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
@@ -289,6 +307,9 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   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;       // ===
@@ -554,6 +575,33 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry {
   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