]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/UPGRADE/AliITSUv1Layer.h
A new (kIBModel4) revised version of the Inner Barrel from Mario
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv1Layer.h
index 520cbd00b71aab26bf295bffa7f2fc7375ad41ff..630dcd34e7c4c32a6726970acf2eb8baede741c1 100644 (file)
@@ -26,6 +26,9 @@
 class TGeoVolume;
 
 class AliITSUv1Layer : public AliITSv11Geometry {
+  public:
+  enum {kStave,kHalfStave,kModule,kChip,kNHLevels};
+
   public:
     AliITSUv1Layer();
     AliITSUv1Layer(Int_t debug);
@@ -37,28 +40,35 @@ class AliITSUv1Layer : public AliITSv11Geometry {
     //
     Bool_t    IsTurbo() const {return fIsTurbo;};
 
-    Double_t  GetLadderThick() const {return fLadderThick;};
-    Double_t  GetLadderTilt()  const {return fLadderTilt;};
-    Double_t  GetLadderWidth() const {return fLadderWidth;};
+    Double_t  GetChipThick()   const {return fChipThick;};
+    Double_t  GetStaveTilt()   const {return fStaveTilt;};
+    Double_t  GetStaveWidth()  const {return fStaveWidth;};
     Double_t  GetSensorThick() const {return fSensorThick;};
-    Double_t  GetNLadders()    const {return fNLadders;};
-    Double_t  GetNModules()    const {return fNModules;};
+    Double_t  GetNStaves()     const {return fNStaves;};
+    Double_t  GetNChips()      const {return fNChips;};
     Double_t  GetRadius()      const {return fLayRadius;};
     Double_t  GetPhi0()        const {return fPhi0;};
     Double_t  GetZLength()     const {return fZLength;};
-    Int_t     GetDetType()     const {return fDetTypeID;}
+    Int_t     GetChipType()    const {return fChipTypeID;}
+    //
+    Int_t     GetNStavesPerParent()     const {return fHierarchy[kStave];}
+    Int_t     GetNHalfStavesPerParent() const {return fHierarchy[kHalfStave];}
+    Int_t     GetNModulesPerParent()    const {return fHierarchy[kModule];}
+    Int_t     GetNChipsPerParent()      const {return fHierarchy[kChip];}
+    //
+    Int_t     GetBuildLevel()           const {return fBuildLevel;}
     AliITSUv1::AliITSUModel_t GetStaveModel() const {return fStaveModel;}
     //
-    void      SetLadderThick(Double_t t)    {fLadderThick = t;};
-    void      SetLadderTilt(Double_t t);
-    void      SetLadderWidth(Double_t w);
-    void      SetSensorThick(Double_t t)    {fSensorThick = t;};
-    void      SetNLadders(Int_t n)          {fNLadders = n;};
-    void      SetNModules(Int_t m)          {fNModules = m;};
-    void      SetRadius(Double_t r)         {fLayRadius = r;};
-    void      SetPhi0(Double_t phi)         {fPhi0 = phi;}
-    void      SetZLength(Double_t z)        {fZLength   = z;};
-    void      SetDetType(Int_t tp)          {fDetTypeID = tp;}
+    void      SetChipThick(Double_t t)       {fChipThick = t;};
+    void      SetStaveTilt(Double_t t);
+    void      SetStaveWidth(Double_t w);
+    void      SetSensorThick(Double_t t)     {fSensorThick = t;};
+    void      SetNStaves(Int_t n)            {fHierarchy[kStave] = fNStaves = n;};
+    void      SetNUnits(Int_t u);
+    void      SetRadius(Double_t r)          {fLayRadius = r;};
+    void      SetPhi0(Double_t phi)          {fPhi0 = phi;}
+    void      SetZLength(Double_t z)         {fZLength   = z;};
+    void      SetChipType(Int_t tp)          {fChipTypeID = tp;}
     void      SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;}
     void      SetStaveModel(AliITSUv1::AliITSUModel_t model) {fStaveModel=model;}
     virtual void CreateLayer(TGeoVolume *moth);
@@ -66,14 +76,14 @@ class AliITSUv1Layer : public AliITSv11Geometry {
   private:
     void CreateLayerTurbo(TGeoVolume *moth);
 
-    Double_t RadiusOfTurboContainer();
-
-    TGeoVolume* CreateLadder(const TGeoManager *mgr=gGeoManager);
-    //TGeoVolume* CreateModule(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateStave(const TGeoManager *mgr=gGeoManager);
+    //TGeoVolume* CreateChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
     TGeoVolume* CreateModuleInnerB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
-    TGeoVolume* CreateModuleOuterB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateChipInnerB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateModuleOuterB(const TGeoManager *mgr=gGeoManager);
 
 
+    TGeoVolume* CreateStaveInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
     TGeoVolume* CreateStaveStructInnerB(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
     TGeoVolume* CreateStaveModelInnerBDummy(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager) const;
     TGeoVolume* CreateStaveModelInnerB0(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
@@ -81,16 +91,17 @@ class AliITSUv1Layer : public AliITSv11Geometry {
     TGeoVolume* CreateStaveModelInnerB21(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
     TGeoVolume* CreateStaveModelInnerB22(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
     TGeoVolume* CreateStaveModelInnerB3(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateStaveModelInnerB4(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
 
-    TGeoVolume* CreateStaveOuterB(Double_t x, const TGeoManager *mgr=gGeoManager);
-    TGeoVolume* CreateStaveModelOuterBDummy(Double_t x, const TGeoManager *mgr=gGeoManager) const;
-    TGeoVolume* CreateStaveModelOuterB0(Double_t x, const TGeoManager *mgr=gGeoManager) const;
-    TGeoVolume* CreateStaveModelOuterB1(Double_t x, const TGeoManager *mgr=gGeoManager);
-    TGeoVolume* CreateSpaceFrameOuterB(Double_t x, const TGeoManager *mgr=gGeoManager);
-    TGeoVolume* CreateSpaceFrameOuterBDummy(Double_t x, const TGeoManager *mgr=gGeoManager) const;
-    TGeoVolume* CreateSpaceFrameOuterB0(Double_t x, const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateStaveOuterB(const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateStaveModelOuterBDummy(const TGeoManager *mgr=gGeoManager) const;
+    TGeoVolume* CreateStaveModelOuterB0(const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateStaveModelOuterB12(const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateSpaceFrameOuterB(const TGeoManager *mgr=gGeoManager);
+    TGeoVolume* CreateSpaceFrameOuterBDummy(const TGeoManager *mgr=gGeoManager) const;
+    TGeoVolume* CreateSpaceFrameOuterB1(const TGeoManager *mgr=gGeoManager);
 
-    TGeoArb8* CreateLadderSide(const char *name,
+    TGeoArb8* CreateStaveSide(const char *name,
                               Double_t dz, Double_t angle, Double_t xSign,
                               Double_t L, Double_t H, Double_t l);
     TGeoCombiTrans* CreateCombiTrans( const char *name,
@@ -102,16 +113,19 @@ class AliITSUv1Layer : public AliITSv11Geometry {
 
 
     Int_t     fLayerNumber; // Current layer number
-    Double_t  fPhi0;        // lab phi of 1st ladder, in degrees!!!
+    Double_t  fPhi0;        // lab phi of 1st stave, in degrees!!!
     Double_t  fLayRadius;   // Inner radius of this layer
     Double_t  fZLength;     // Z length of this layer
     Double_t  fSensorThick; // Sensor thickness
-    Double_t  fLadderThick; // Ladder thickness
-    Double_t  fLadderWidth; // Ladder width (for turbo layers only)
-    Double_t  fLadderTilt;  // Ladder tilt angle (for turbo layers only) in degrees
-    Int_t     fNLadders;    // Number of ladders in this layer
-    Int_t     fNModules;    // Number of modules per ladder in this layer
-    UInt_t    fDetTypeID;   // detector type id
+    Double_t  fChipThick;   // Chip thickness
+    Double_t  fStaveWidth;  // Stave width (for turbo layers only)
+    Double_t  fStaveTilt;   // Stave tilt angle (for turbo layers only) in degrees
+    Int_t     fNStaves;     // Number of staves in this layer
+    Int_t     fNModules;    // Number of modules per container if defined (HalfStave, Stave, whatever is container)
+    Int_t     fNChips;      // N. chips per container (module, HalfStave, Stave, whatever is container)
+    Int_t     fHierarchy[kNHLevels]; // array to query number of staves, hstaves, modules, chips per its parent volume
+    //    
+    UInt_t    fChipTypeID;  // detector type id
     Bool_t    fIsTurbo;     // True if this layer is a "turbo" layer
     Int_t     fBuildLevel;  // Used for material studies
 
@@ -119,19 +133,75 @@ class AliITSUv1Layer : public AliITSv11Geometry {
 
     // Parameters for the Upgrade geometry
 
+    // General Parameters
+    static const Int_t    fgkNumberOfInnerLayers;// Number of IB Layers
+
     static const Double_t fgkDefaultSensorThick; // Default sensor thickness
-    static const Double_t fgkDefaultLadderThick; // Default ladder thickness
+    static const Double_t fgkDefaultChipThick;   // Default chip thickness
+
+    // Inner Barrel Parameters
+    static const Int_t    fgkIBChipsPerRow;      // IB chips per row in module
+    static const Int_t    fgkIBNChipRows;        // IB chip rows in module
+
+    static const Double_t fgkIBFlexCableAlThick; // Thickness of FPC Aluminum
+    static const Double_t fgkIBFlexCableKapThick;// Thickness of FPC Kapton
+    static const Double_t fgkIBGlueThick;        // IB glue thickness
+    static const Double_t fgkIBCarbonFleeceThick;// IB carbon fleece thickness
+    static const Double_t fgkIBCarbonPaperThick; // IB Carbon Paper Thickness
+    static const Double_t fgkIBK13D2UThick;      // IB k13d2u prepreg thickness
+    static const Double_t fgkIBCoolPipeInnerD;   // IB cooling inner diameter
+    static const Double_t fgkIBCoolPipeThick;    // IB cooling pipe thickness
+    static const Double_t fgkIBCoolPipeXDist;    // IB cooling pipe separation
+    static const Double_t fgkIBTopVertexWidth;   // IB TopVertex width
+    static const Double_t fgkIBTopVertexHeight;  // IB TopVertex height
+    static const Double_t fgkIBSideVertexWidth;  // IB SideVertex width
+    static const Double_t fgkIBSideVertexHeight; // IB SideVertex height
+    static const Double_t fgkIBTopFilamentLength;// IB TopFilament length
+    static const Double_t fgkIBTopFilamentSide;  // IB TopFilament side
+    static const Double_t fgkIBTopFilamentAlpha; // IB TopFilament angle
+
+    static const Double_t fgkIBStaveHeight;      // IB Stave Total Y Height
+
+    // Outer Barrel Parameters
+    static const Int_t    fgkOBChipsPerRow;      // OB chips per row in module
+    static const Int_t    fgkOBNChipRows;        // OB chip rows in module
 
     static const Double_t fgkOBHalfStaveWidth;   // OB Half Stave Width
+    static const Double_t fgkOBModuleWidth;      // OB Module Width
     static const Double_t fgkOBModuleGap;        // Gap between OB modules
-    static const Double_t fgkOBFlexCable1Thick;  // Thickness of
-    static const Double_t fgkOBFlexCable2Thick;  // OB flex cables
-    static const Double_t fgkOBBusCable1Thick;   // Thickness of
-    static const Double_t fgkOBBusCable2Thick;   // OB bus cables
+    static const Double_t fgkOBChipXGap;         // Gap between OB chips on X
+    static const Double_t fgkOBChipZGap;         // Gap between OB chips on Z
+    static const Double_t fgkOBFlexCableAlThick; // Thickness of FPC Aluminum
+    static const Double_t fgkOBFlexCableCuThick; // Thickness of FPC Copper
+    static const Double_t fgkOBFlexCableKapThick1;// Thickness of FPC Kapton
+    static const Double_t fgkOBFlexCableKapThick;// Thickness of FPC Kapton
+    static const Double_t fgkOBBusCableAlThick;  // Thickness of Bus Aluminum
+    static const Double_t fgkOBBusCableKapThick; // Thickness of Bus Kapton
     static const Double_t fgkOBCarbonPlateThick; // OB Carbon Plate Thickness
     static const Double_t fgkOBColdPlateThick;   // OB Cold Plate Thickness
-    static const Double_t fgkOBGlueThick;        // OB Glue total Thickness
-    static const Double_t fgkOBModuleZLength;    // OB Module Length along Z
+    static const Double_t fgkOBGlueThickM1;      // OB Glue total Thickness
+    static const Double_t fgkOBGlueThick;        // OB Glue Thickness in Model2
+    static const Double_t fgkOBModuleZLength;    // OB Chip Length along Z
+    static const Double_t fgkOBHalfStaveYTrans;  // OB half staves Y transl.
+    static const Double_t fgkOBHalfStaveXOverlap;// OB half staves X overlap
+    static const Double_t fgkOBGraphiteFoilThick;// OB graphite foil thickness
+    static const Double_t fgkOBCarbonFleeceThick;// OB carbon fleece thickness
+    static const Double_t fgkOBCoolTubeInnerDM1; // OB cooling inner diameter
+    static const Double_t fgkOBCoolTubeInnerD;   // OB cooling inner diameter
+    static const Double_t fgkOBCoolTubeThick;    // OB cooling tube thickness
+    static const Double_t fgkOBCoolTubeXDist;    // OB cooling tube separation
+
+    static const Double_t fgkOBSpaceFrameWidth;  // OB Space Frame Width
+    static const Double_t fgkOBSpaceFrameTotHigh;// OB Total Y Height
+    static const Double_t fgkOBSFrameBeamRadius; // OB Space Frame Beam Radius
+    static const Double_t fgkOBSpaceFrameLa;     // Parameters defining...
+    static const Double_t fgkOBSpaceFrameHa;     // ...the V side shape...
+    static const Double_t fgkOBSpaceFrameLb;     // ...of the carbon...
+    static const Double_t fgkOBSpaceFrameHb;     // ...OB Space Frame
+    static const Double_t fgkOBSpaceFrameL;      // OB SF
+    static const Double_t fgkOBSFBotBeamAngle;   // OB SF bottom beam angle
+    static const Double_t fgkOBSFrameBeamSidePhi;// OB SF side beam angle
+
 
   ClassDef(AliITSUv1Layer,0) // ITS Upgrade v1 geometry
 };