]>
Commit | Line | Data |
---|---|---|
b705c75b | 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 { | |
68b7631d | 29 | public: |
30 | enum {kStave,kHalfStave,kModule,kChip,kNHLevels}; | |
31 | ||
b705c75b | 32 | public: |
33 | AliITSUv1Layer(); | |
34 | AliITSUv1Layer(Int_t debug); | |
35 | AliITSUv1Layer(Int_t lay, Int_t debug); | |
36 | AliITSUv1Layer(Int_t lay, Bool_t turbo, Int_t debug); | |
37 | AliITSUv1Layer(const AliITSUv1Layer &source); | |
38 | AliITSUv1Layer& operator=(const AliITSUv1Layer &source); | |
39 | virtual ~AliITSUv1Layer(); | |
40 | // | |
41 | Bool_t IsTurbo() const {return fIsTurbo;}; | |
42 | ||
1fc6eff6 | 43 | Double_t GetChipThick() const {return fChipThick;}; |
44 | Double_t GetStaveTilt() const {return fStaveTilt;}; | |
45 | Double_t GetStaveWidth() const {return fStaveWidth;}; | |
b705c75b | 46 | Double_t GetSensorThick() const {return fSensorThick;}; |
1fc6eff6 | 47 | Double_t GetNStaves() const {return fNStaves;}; |
68b7631d | 48 | Double_t GetNChips() const {return fNChips;}; |
b705c75b | 49 | Double_t GetRadius() const {return fLayRadius;}; |
50 | Double_t GetPhi0() const {return fPhi0;}; | |
51 | Double_t GetZLength() const {return fZLength;}; | |
68b7631d | 52 | Int_t GetChipType() const {return fChipTypeID;} |
53 | // | |
54 | Int_t GetNStavesPerParent() const {return fHierarchy[kStave];} | |
55 | Int_t GetNHalfStavesPerParent() const {return fHierarchy[kHalfStave];} | |
56 | Int_t GetNModulesPerParent() const {return fHierarchy[kModule];} | |
57 | Int_t GetNChipsPerParent() const {return fHierarchy[kChip];} | |
58 | // | |
1fc6eff6 | 59 | Int_t GetBuildLevel() const {return fBuildLevel;} |
b705c75b | 60 | AliITSUv1::AliITSUModel_t GetStaveModel() const {return fStaveModel;} |
61 | // | |
1fc6eff6 | 62 | void SetChipThick(Double_t t) {fChipThick = t;}; |
852af72e | 63 | void SetStaveTilt(Double_t t); |
64 | void SetStaveWidth(Double_t w); | |
68b7631d | 65 | void SetSensorThick(Double_t t) {fSensorThick = t;}; |
66 | void SetNStaves(Int_t n) {fHierarchy[kStave] = fNStaves = n;}; | |
67 | void SetNUnits(Int_t u); | |
68 | void SetRadius(Double_t r) {fLayRadius = r;}; | |
69 | void SetPhi0(Double_t phi) {fPhi0 = phi;} | |
70 | void SetZLength(Double_t z) {fZLength = z;}; | |
852af72e | 71 | void SetChipType(Int_t tp) {fChipTypeID = tp;} |
b705c75b | 72 | void SetBuildLevel(Int_t buildLevel){fBuildLevel=buildLevel;} |
73 | void SetStaveModel(AliITSUv1::AliITSUModel_t model) {fStaveModel=model;} | |
74 | virtual void CreateLayer(TGeoVolume *moth); | |
75 | ||
76 | private: | |
77 | void CreateLayerTurbo(TGeoVolume *moth); | |
78 | ||
852af72e | 79 | TGeoVolume* CreateStave(const TGeoManager *mgr=gGeoManager); |
80 | //TGeoVolume* CreateChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager); | |
68b7631d | 81 | TGeoVolume* CreateModuleInnerB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager); |
852af72e | 82 | TGeoVolume* CreateChipInnerB(Double_t x,Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager); |
68b7631d | 83 | TGeoVolume* CreateModuleOuterB(const TGeoManager *mgr=gGeoManager); |
b705c75b | 84 | |
85 | ||
68b7631d | 86 | TGeoVolume* CreateStaveInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager *mgr=gGeoManager); |
b705c75b | 87 | TGeoVolume* CreateStaveStructInnerB(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); |
88 | TGeoVolume* CreateStaveModelInnerBDummy(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager) const; | |
89 | TGeoVolume* CreateStaveModelInnerB0(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); | |
90 | TGeoVolume* CreateStaveModelInnerB1(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); | |
91 | TGeoVolume* CreateStaveModelInnerB21(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); | |
92 | TGeoVolume* CreateStaveModelInnerB22(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); | |
93 | TGeoVolume* CreateStaveModelInnerB3(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); | |
019dc90c | 94 | TGeoVolume* CreateStaveModelInnerB4(Double_t x,Double_t z, const TGeoManager *mgr=gGeoManager); |
b705c75b | 95 | |
89efcdb3 | 96 | TGeoVolume* CreateStaveOuterB(const TGeoManager *mgr=gGeoManager); |
97 | TGeoVolume* CreateStaveModelOuterBDummy(const TGeoManager *mgr=gGeoManager) const; | |
98 | TGeoVolume* CreateStaveModelOuterB0(const TGeoManager *mgr=gGeoManager); | |
1fc6eff6 | 99 | TGeoVolume* CreateStaveModelOuterB12(const TGeoManager *mgr=gGeoManager); |
89efcdb3 | 100 | TGeoVolume* CreateSpaceFrameOuterB(const TGeoManager *mgr=gGeoManager); |
101 | TGeoVolume* CreateSpaceFrameOuterBDummy(const TGeoManager *mgr=gGeoManager) const; | |
102 | TGeoVolume* CreateSpaceFrameOuterB1(const TGeoManager *mgr=gGeoManager); | |
b705c75b | 103 | |
852af72e | 104 | TGeoArb8* CreateStaveSide(const char *name, |
b705c75b | 105 | Double_t dz, Double_t angle, Double_t xSign, |
106 | Double_t L, Double_t H, Double_t l); | |
107 | TGeoCombiTrans* CreateCombiTrans( const char *name, | |
108 | Double_t dy, Double_t dz, Double_t dphi, | |
109 | Bool_t planeSym=kFALSE); | |
110 | void AddTranslationToCombiTrans( TGeoCombiTrans* ct, | |
111 | Double_t dx=0, Double_t dy=0, | |
112 | Double_t dz=0) const; | |
113 | ||
114 | ||
115 | Int_t fLayerNumber; // Current layer number | |
852af72e | 116 | Double_t fPhi0; // lab phi of 1st stave, in degrees!!! |
b705c75b | 117 | Double_t fLayRadius; // Inner radius of this layer |
118 | Double_t fZLength; // Z length of this layer | |
119 | Double_t fSensorThick; // Sensor thickness | |
1fc6eff6 | 120 | Double_t fChipThick; // Chip thickness |
68b7631d | 121 | Double_t fStaveWidth; // Stave width (for turbo layers only) |
122 | Double_t fStaveTilt; // Stave tilt angle (for turbo layers only) in degrees | |
123 | Int_t fNStaves; // Number of staves in this layer | |
124 | Int_t fNModules; // Number of modules per container if defined (HalfStave, Stave, whatever is container) | |
125 | Int_t fNChips; // N. chips per container (module, HalfStave, Stave, whatever is container) | |
126 | Int_t fHierarchy[kNHLevels]; // array to query number of staves, hstaves, modules, chips per its parent volume | |
127 | // | |
128 | UInt_t fChipTypeID; // detector type id | |
b705c75b | 129 | Bool_t fIsTurbo; // True if this layer is a "turbo" layer |
130 | Int_t fBuildLevel; // Used for material studies | |
131 | ||
132 | AliITSUv1::AliITSUModel_t fStaveModel; // The stave model | |
133 | ||
134 | // Parameters for the Upgrade geometry | |
135 | ||
68b7631d | 136 | // General Parameters |
137 | static const Int_t fgkNumberOfInnerLayers;// Number of IB Layers | |
138 | ||
b705c75b | 139 | static const Double_t fgkDefaultSensorThick; // Default sensor thickness |
1fc6eff6 | 140 | static const Double_t fgkDefaultChipThick; // Default chip thickness |
68b7631d | 141 | |
142 | // Inner Barrel Parameters | |
143 | static const Int_t fgkIBChipsPerRow; // IB chips per row in module | |
144 | static const Int_t fgkIBNChipRows; // IB chip rows in module | |
145 | ||
019dc90c | 146 | static const Double_t fgkIBFlexCableAlThick; // Thickness of FPC Aluminum |
147 | static const Double_t fgkIBFlexCableKapThick;// Thickness of FPC Kapton | |
148 | static const Double_t fgkIBGlueThick; // IB glue thickness | |
149 | static const Double_t fgkIBCarbonFleeceThick;// IB carbon fleece thickness | |
150 | static const Double_t fgkIBCarbonPaperThick; // IB Carbon Paper Thickness | |
151 | static const Double_t fgkIBK13D2UThick; // IB k13d2u prepreg thickness | |
152 | static const Double_t fgkIBCoolPipeInnerD; // IB cooling inner diameter | |
153 | static const Double_t fgkIBCoolPipeThick; // IB cooling pipe thickness | |
154 | static const Double_t fgkIBCoolPipeXDist; // IB cooling pipe separation | |
155 | static const Double_t fgkIBTopVertexWidth; // IB TopVertex width | |
156 | static const Double_t fgkIBTopVertexHeight; // IB TopVertex height | |
157 | static const Double_t fgkIBSideVertexWidth; // IB SideVertex width | |
158 | static const Double_t fgkIBSideVertexHeight; // IB SideVertex height | |
159 | static const Double_t fgkIBTopFilamentLength;// IB TopFilament length | |
160 | static const Double_t fgkIBTopFilamentSide; // IB TopFilament side | |
161 | static const Double_t fgkIBTopFilamentAlpha; // IB TopFilament angle | |
162 | ||
163 | static const Double_t fgkIBStaveHeight; // IB Stave Total Y Height | |
164 | ||
68b7631d | 165 | // Outer Barrel Parameters |
166 | static const Int_t fgkOBChipsPerRow; // OB chips per row in module | |
167 | static const Int_t fgkOBNChipRows; // OB chip rows in module | |
b705c75b | 168 | |
169 | static const Double_t fgkOBHalfStaveWidth; // OB Half Stave Width | |
68b7631d | 170 | static const Double_t fgkOBModuleWidth; // OB Module Width |
171 | static const Double_t fgkOBModuleGap; // Gap between OB modules | |
172 | static const Double_t fgkOBChipXGap; // Gap between OB chips on X | |
173 | static const Double_t fgkOBChipZGap; // Gap between OB chips on Z | |
174 | static const Double_t fgkOBFlexCableAlThick; // Thickness of FPC Aluminum | |
1fc6eff6 | 175 | static const Double_t fgkOBFlexCableCuThick; // Thickness of FPC Copper |
f1496ca7 | 176 | static const Double_t fgkOBFlexCableKapThick1;// Thickness of FPC Kapton |
68b7631d | 177 | static const Double_t fgkOBFlexCableKapThick;// Thickness of FPC Kapton |
178 | static const Double_t fgkOBBusCableAlThick; // Thickness of Bus Aluminum | |
179 | static const Double_t fgkOBBusCableKapThick; // Thickness of Bus Kapton | |
b705c75b | 180 | static const Double_t fgkOBCarbonPlateThick; // OB Carbon Plate Thickness |
181 | static const Double_t fgkOBColdPlateThick; // OB Cold Plate Thickness | |
1fc6eff6 | 182 | static const Double_t fgkOBGlueThickM1; // OB Glue total Thickness |
183 | static const Double_t fgkOBGlueThick; // OB Glue Thickness in Model2 | |
68b7631d | 184 | static const Double_t fgkOBModuleZLength; // OB Chip Length along Z |
185 | static const Double_t fgkOBHalfStaveYTrans; // OB half staves Y transl. | |
186 | static const Double_t fgkOBHalfStaveXOverlap;// OB half staves X overlap | |
187 | static const Double_t fgkOBGraphiteFoilThick;// OB graphite foil thickness | |
1fc6eff6 | 188 | static const Double_t fgkOBCarbonFleeceThick;// OB carbon fleece thickness |
189 | static const Double_t fgkOBCoolTubeInnerDM1; // OB cooling inner diameter | |
68b7631d | 190 | static const Double_t fgkOBCoolTubeInnerD; // OB cooling inner diameter |
191 | static const Double_t fgkOBCoolTubeThick; // OB cooling tube thickness | |
192 | static const Double_t fgkOBCoolTubeXDist; // OB cooling tube separation | |
193 | ||
194 | static const Double_t fgkOBSpaceFrameWidth; // OB Space Frame Width | |
195 | static const Double_t fgkOBSpaceFrameTotHigh;// OB Total Y Height | |
196 | static const Double_t fgkOBSFrameBeamRadius; // OB Space Frame Beam Radius | |
197 | static const Double_t fgkOBSpaceFrameLa; // Parameters defining... | |
198 | static const Double_t fgkOBSpaceFrameHa; // ...the V side shape... | |
199 | static const Double_t fgkOBSpaceFrameLb; // ...of the carbon... | |
200 | static const Double_t fgkOBSpaceFrameHb; // ...OB Space Frame | |
201 | static const Double_t fgkOBSpaceFrameL; // OB SF | |
202 | static const Double_t fgkOBSFBotBeamAngle; // OB SF bottom beam angle | |
203 | static const Double_t fgkOBSFrameBeamSidePhi;// OB SF side beam angle | |
204 | ||
b705c75b | 205 | |
206 | ClassDef(AliITSUv1Layer,0) // ITS Upgrade v1 geometry | |
207 | }; | |
208 | ||
209 | #endif |