]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSUv1Layer.h
Switching to the TDR naming schema (I cross my fingers)
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv1Layer.h
1 #ifndef ALIITSUV1LAYER_H
2 #define ALIITSUV1LAYER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 //*************************************************************************
8 // This class Defines the Geometry for the ITS Upgrade using TGeo
9 // This is a work class used to study different configurations
10 // during the development of the new ITS structure.
11 //
12 //  Mario Sitta <sitta@to.infn.it>
13 //*************************************************************************
14
15
16 /*
17   $Id: AliITSUv1Layer.h
18  */
19
20 #include "AliITSv11Geometry.h"
21 #include "AliITSUv1.h"
22 #include <TGeoManager.h>
23 #include <TGeoCompositeShape.h>
24 #include <TGeoXtru.h>
25
26 class TGeoVolume;
27
28 class AliITSUv1Layer : public AliITSv11Geometry {
29   public:
30     AliITSUv1Layer();
31     AliITSUv1Layer(Int_t debug);
32     AliITSUv1Layer(Int_t lay, Int_t debug);
33     AliITSUv1Layer(Int_t lay, Bool_t turbo, Int_t debug);
34     AliITSUv1Layer(const AliITSUv1Layer &source);
35     AliITSUv1Layer& operator=(const AliITSUv1Layer &source);
36     virtual ~AliITSUv1Layer();
37     //
38     Bool_t    IsTurbo() const {return fIsTurbo;};
39
40     Double_t  GetStaveThick() const {return fStaveThick;};
41     Double_t  GetStaveTilt()  const {return fStaveTilt;};
42     Double_t  GetStaveWidth() const {return fStaveWidth;};
43     Double_t  GetSensorThick() const {return fSensorThick;};
44     Double_t  GetNStaves()    const {return fNStaves;};
45     Double_t  GetNChips()    const {return fNChips;};
46     Double_t  GetRadius()      const {return fLayRadius;};
47     Double_t  GetPhi0()        const {return fPhi0;};
48     Double_t  GetZLength()     const {return fZLength;};
49     Int_t     GetChipType()     const {return fChipTypeID;}
50     AliITSUv1::AliITSUModel_t GetStaveModel() const {return fStaveModel;}
51     //
52     void      SetStaveThick(Double_t t)    {fStaveThick = t;};
53     void      SetStaveTilt(Double_t t);
54     void      SetStaveWidth(Double_t w);
55     void      SetSensorThick(Double_t t)    {fSensorThick = t;};
56     void      SetNStaves(Int_t n)          {fNStaves = n;};
57     void      SetNChips(Int_t m)          {fNChips = m;};
58     void      SetRadius(Double_t r)         {fLayRadius = r;};
59     void      SetPhi0(Double_t phi)         {fPhi0 = phi;}
60     void      SetZLength(Double_t z)        {fZLength   = z;};
61     void      SetChipType(Int_t tp)          {fChipTypeID = tp;}
62     void      SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;}
63     void      SetStaveModel(AliITSUv1::AliITSUModel_t model) {fStaveModel=model;}
64     virtual void CreateLayer(TGeoVolume *moth);
65
66   private:
67     void CreateLayerTurbo(TGeoVolume *moth);
68
69     Double_t RadiusOfTurboContainer();
70
71     TGeoVolume* CreateStave(const TGeoManager *mgr=gGeoManager);
72     //TGeoVolume* CreateChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
73     TGeoVolume* CreateChipInnerB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
74     TGeoVolume* CreateChipOuterB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager);
75
76
77     TGeoVolume* CreateStaveStructInnerB(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
78     TGeoVolume* CreateStaveModelInnerBDummy(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager) const;
79     TGeoVolume* CreateStaveModelInnerB0(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
80     TGeoVolume* CreateStaveModelInnerB1(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
81     TGeoVolume* CreateStaveModelInnerB21(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
82     TGeoVolume* CreateStaveModelInnerB22(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
83     TGeoVolume* CreateStaveModelInnerB3(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager);
84
85     TGeoVolume* CreateStaveOuterB(Double_t x, const TGeoManager *mgr=gGeoManager);
86     TGeoVolume* CreateStaveModelOuterBDummy(Double_t x, const TGeoManager *mgr=gGeoManager) const;
87     TGeoVolume* CreateStaveModelOuterB0(Double_t x, const TGeoManager *mgr=gGeoManager) const;
88     TGeoVolume* CreateStaveModelOuterB1(Double_t x, const TGeoManager *mgr=gGeoManager);
89     TGeoVolume* CreateSpaceFrameOuterB(Double_t x, const TGeoManager *mgr=gGeoManager);
90     TGeoVolume* CreateSpaceFrameOuterBDummy(Double_t x, const TGeoManager *mgr=gGeoManager) const;
91     TGeoVolume* CreateSpaceFrameOuterB0(Double_t x, const TGeoManager *mgr=gGeoManager);
92
93     TGeoArb8* CreateStaveSide(const char *name,
94                                Double_t dz, Double_t angle, Double_t xSign,
95                                Double_t L, Double_t H, Double_t l);
96     TGeoCombiTrans* CreateCombiTrans( const char *name,
97                                       Double_t dy, Double_t dz, Double_t dphi,
98                                       Bool_t planeSym=kFALSE);
99     void AddTranslationToCombiTrans( TGeoCombiTrans* ct,
100                                      Double_t dx=0, Double_t dy=0,
101                                      Double_t dz=0) const;
102
103
104     Int_t     fLayerNumber; // Current layer number
105     Double_t  fPhi0;        // lab phi of 1st stave, in degrees!!!
106     Double_t  fLayRadius;   // Inner radius of this layer
107     Double_t  fZLength;     // Z length of this layer
108     Double_t  fSensorThick; // Sensor thickness
109     Double_t  fStaveThick; // Stave thickness
110     Double_t  fStaveWidth; // Stave width (for turbo layers only)
111     Double_t  fStaveTilt;  // Stave tilt angle (for turbo layers only) in degrees
112     Int_t     fNStaves;    // Number of staves in this layer
113     Int_t     fNChips;    // Number of chips per stave in this layer
114     UInt_t    fChipTypeID;   // detector type id
115     Bool_t    fIsTurbo;     // True if this layer is a "turbo" layer
116     Int_t     fBuildLevel;  // Used for material studies
117
118     AliITSUv1::AliITSUModel_t fStaveModel; // The stave model
119
120     // Parameters for the Upgrade geometry
121
122     static const Double_t fgkDefaultSensorThick; // Default sensor thickness
123     static const Double_t fgkDefaultStaveThick; // Default stave thickness
124
125     static const Double_t fgkOBHalfStaveWidth;   // OB Half Stave Width
126     static const Double_t fgkOBChipGap;        // Gap between OB chips
127     static const Double_t fgkOBFlexCable1Thick;  // Thickness of
128     static const Double_t fgkOBFlexCable2Thick;  // OB flex cables
129     static const Double_t fgkOBBusCable1Thick;   // Thickness of
130     static const Double_t fgkOBBusCable2Thick;   // OB bus cables
131     static const Double_t fgkOBCarbonPlateThick; // OB Carbon Plate Thickness
132     static const Double_t fgkOBColdPlateThick;   // OB Cold Plate Thickness
133     static const Double_t fgkOBGlueThick;        // OB Glue total Thickness
134     static const Double_t fgkOBChipZLength;    // OB Chip Length along Z
135
136   ClassDef(AliITSUv1Layer,0) // ITS Upgrade v1 geometry
137 };
138
139 #endif