]>
Commit | Line | Data |
---|---|---|
db486a6e | 1 | #ifndef ALIITSV11GEOMETRYSDD_H |
2 | #define ALIITSV11GEOMETRYSDD_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // Ludovic Gaudichet (Ludovic.Gaudichet@to.infn.it) | |
8 | ||
9 | class TGeoVolume; | |
10 | class TGeoCombiTrans; | |
11 | class TGeoArb8; | |
c789ee28 | 12 | class TGeoNode; |
db486a6e | 13 | |
c789ee28 | 14 | #include <TObjArray.h> |
db486a6e | 15 | |
c789ee28 | 16 | //---------------------------------------------------------------------- |
17 | class AliITSv11GeomSDDcable: public TObject { | |
18 | public: | |
19 | AliITSv11GeomSDDcable():TObject(){fInitialNode = 0; fPointArray.SetOwner(); }; | |
20 | virtual ~AliITSv11GeomSDDcable(); | |
21 | void AddCheckPoint( TGeoVolume *vol, Int_t iCheckPt, Double_t *coord); | |
22 | Int_t GetNCheckPoints() {return fVolumeArray.GetEntriesFast();}; | |
23 | Int_t GetCheckPoint( Int_t iCheckPt, Int_t nOccur, Int_t motherLevel, | |
24 | Double_t *coord); | |
25 | void SetInitialNode(TGeoVolume *vol); | |
26 | void ResetInitialNode(); | |
27 | ||
28 | protected: | |
29 | bool CheckDaughter(Int_t i, TGeoNode* node); | |
30 | ||
31 | Int_t fNodeInd[50]; | |
32 | TObjArray fVolumeArray; | |
33 | TObjArray fPointArray; | |
34 | TGeoVolume *fCurrentVol; | |
35 | TGeoNode *fInitialNode; | |
36 | ||
37 | ClassDef(AliITSv11GeomSDDcable,1) // ITS v11 SDD cable geometry | |
38 | }; | |
39 | ||
40 | ||
41 | ||
42 | //---------------------------------------------------------------------- | |
43 | class AliITSv11GeomSDDcableNap : public AliITSv11GeomSDDcable { | |
44 | public: | |
45 | AliITSv11GeomSDDcableNap(Double_t width, Double_t thick); | |
46 | virtual ~AliITSv11GeomSDDcableNap() {}; | |
47 | Int_t CreateAndInsertCableSegment(Int_t p1, Int_t p2, TGeoVolume *motherVol); | |
48 | protected: | |
49 | Double_t fWidth; | |
50 | Double_t fThick; | |
51 | ||
52 | ClassDef(AliITSv11GeomSDDcableNap,1) // ITS v11 SDD cable Nap geometry | |
53 | }; | |
db486a6e | 54 | |
c789ee28 | 55 | |
56 | ||
57 | //---------------------------------------------------------------------- | |
db486a6e | 58 | class AliITSv11GeometrySDD : public AliITSv11Geometry { |
59 | ||
60 | public: | |
61 | AliITSv11GeometrySDD(); | |
62 | AliITSv11GeometrySDD(Int_t debug); | |
63 | virtual ~AliITSv11GeometrySDD(){}; | |
64 | ||
c789ee28 | 65 | // Main functions |
db486a6e | 66 | virtual void Layer3(TGeoVolume *Moth); |
67 | virtual void Layer4(TGeoVolume *Moth); | |
68 | ||
c789ee28 | 69 | // Functions for coding, testing, debugging |
70 | void ShowOnePiece(TGeoVolume *Moth); | |
71 | void CheckOverlaps(Double_t precision = 0.01); | |
db486a6e | 72 | void AddOnlySegment(Int_t i) { fAddOnlySegment=i; }; |
c789ee28 | 73 | void AddOnlyLay3Ladder(Int_t min,Int_t max){ |
74 | fAddOnlyLadder3min = min; fAddOnlyLadder3max = max; }; | |
75 | void AddOnlyLay4Ladder(Int_t min,Int_t max) { | |
76 | fAddOnlyLadder4min = min; fAddOnlyLadder4max = max;}; | |
77 | ||
78 | virtual void SetGeomParameters(); | |
79 | ||
80 | ||
81 | AliITSv11GeomSDDcable cable; | |
db486a6e | 82 | |
83 | private: | |
84 | ||
c789ee28 | 85 | // Create ladder virtual volumes and its detectors (inside layers 3 and 4) |
db486a6e | 86 | virtual TGeoVolume* CreateLay3Ladder(); |
87 | virtual TGeoVolume* CreateLay3Detectors(); | |
88 | virtual TGeoVolume* CreateLay4Ladder(); | |
89 | virtual TGeoVolume* CreateLay4Detectors(); | |
90 | ||
91 | // Create virtual volumes inside a ladder volume | |
c789ee28 | 92 | virtual TGeoVolume* CreateLadderSegment(Int_t iLay, Int_t iSeg); |
93 | virtual TGeoVolume* CreateEndLadder(Int_t iLay, Int_t); | |
94 | virtual TGeoVolume* CreateHybrid(Int_t iSeg); | |
db486a6e | 95 | |
96 | ||
c789ee28 | 97 | // Create a TGeoCombiTrans : general rotation in phi and (dy,dz) translation |
98 | TGeoCombiTrans* CreateCombiTrans( const char *name, | |
99 | Double_t dy, Double_t dz, Double_t dphi); | |
db486a6e | 100 | |
101 | // add (dx,dy,dz) translation to a initial TGeoCombiTrans | |
c789ee28 | 102 | void AddTranslationToCombiTrans( TGeoCombiTrans* ct, |
103 | Double_t dx=0, Double_t dy=0, Double_t dz=0); | |
db486a6e | 104 | |
105 | // Create one side of the CF corner of the CF structure | |
c789ee28 | 106 | TGeoArb8* CreateLadderSide( Double_t dz, Double_t angle, Double_t xSign, |
107 | Double_t L, Double_t H, Double_t l); | |
db486a6e | 108 | |
109 | // Create de CF structure in the ladder segment | |
110 | void AddLadderCFstruct(Double_t dy, TGeoVolume* vol); | |
111 | ||
112 | // Create a pin support object | |
c789ee28 | 113 | virtual TGeoVolume* CreatePinSupport(); |
114 | ||
115 | virtual TGeoVolume* CreateCoolPipeSupportL(); | |
116 | virtual TGeoVolume* CreateCoolPipeSupportR(); | |
db486a6e | 117 | |
118 | // Create a SDD detector object | |
119 | virtual TGeoVolume* CreateSDDsensor(); | |
120 | ||
c789ee28 | 121 | // Create the base of the thermal bridge, supporting hybrids on ladder |
122 | virtual TGeoVolume* CreateBaseThermalBridge(); | |
db486a6e | 123 | |
124 | //************************************************** | |
125 | ||
c789ee28 | 126 | Int_t fAddOnlyLadder3min; |
127 | Int_t fAddOnlyLadder3max; | |
128 | Int_t fAddOnlyLadder4min; | |
129 | Int_t fAddOnlyLadder4max; | |
db486a6e | 130 | Int_t fAddOnlySegment; |
c789ee28 | 131 | Int_t fColorCarbonFiber; |
132 | Int_t fColorRyton; | |
133 | Int_t fColorPhynox; | |
134 | Int_t fColorSilicon; | |
135 | ||
136 | bool fCoolingOn; | |
137 | ||
138 | // parameters of the SDD geometry : | |
139 | static const Double_t fLay3Rmin; | |
140 | static const Double_t fLay3Rmax; | |
141 | static const Double_t fLay3Length; | |
142 | static const Double_t fLay3LadderLength; | |
143 | static const Double_t fLay3DetLongRadius; | |
144 | static const Double_t fLay3LaddTopCornerEnd; | |
145 | static const Double_t fLay3ZPlusEndLength; | |
146 | static const Int_t fLay3Nladd; | |
147 | static const Int_t fLay3Ndet; | |
148 | static const Double_t fLay3DetShortRadius; | |
149 | ||
150 | static const Double_t fLay4Rmin; | |
151 | static const Double_t fLay4Rmax; | |
152 | static const Double_t fLay4Length; | |
153 | static const Double_t fLay4LadderLength; | |
154 | static const Double_t fLay4LaddTopCornerEnd; | |
155 | static const Double_t fLay4ZPlusEndLength; | |
156 | static const Int_t fLay4Nladd; | |
157 | static const Int_t fLay4Ndet; | |
158 | static const Double_t fLay4DetShortRadius; | |
159 | static const Double_t fLay4DetLongRadius; | |
160 | ||
161 | static const Double_t fSegmentLength; | |
162 | static const Double_t fLadderWidth; | |
163 | static const Double_t fLadderHeight; | |
164 | static const Double_t fLadderBeamRadius; | |
165 | static const Double_t fLadderLa; | |
166 | static const Double_t fLadderHa; | |
167 | static const Double_t fLadderLb; | |
168 | static const Double_t fLadderHb; | |
169 | static const Double_t fLadderl; | |
170 | ||
171 | static const Double_t fBottomBeamAngle; | |
172 | static const Double_t fBeamSidePhi; | |
173 | ||
174 | static const Double_t fWaferThickness; | |
175 | static const Double_t fWaferWidth; | |
176 | static const Double_t fWaferLength; | |
177 | ||
178 | static const Double_t fHybridLength; | |
179 | static const Double_t fHybridWidth; | |
180 | static const Double_t fHybridThBridgeThick; | |
181 | ||
182 | static const Double_t fLadWaferSep; | |
183 | static const Double_t fPinSuppWidth; | |
184 | static const Double_t fPinSuppHeight; | |
185 | static const Double_t fPinSuppRmax; | |
186 | static const Double_t fPinR; | |
187 | static const Double_t fPinSuppLength; | |
188 | static const Double_t fPinSuppThickness; | |
189 | static const Double_t fPinSuppConeAngle; | |
190 | static const Double_t fPinDXminOnSensor; | |
191 | static const Double_t fPinPinDDXOnSensor; | |
192 | static const Double_t fPinDYOnSensor; | |
193 | ||
194 | static const Double_t fCoolPipeInnerDiam; | |
195 | static const Double_t fCoolPipeOuterDiam; | |
196 | static const Double_t fCoolPipeSuppHeight; | |
197 | static const Double_t fCoolPipeSuppMaxLength; | |
198 | static const Double_t fCoolPipeSuppWidthExt; | |
199 | static const Double_t fCoolPipeSuppWidthIn; | |
200 | static const Double_t fCoolPipeSuppHoleDiam; | |
201 | static const Double_t fCoolPipeSuppFulWidth; | |
202 | static const Double_t fCoolPipeSuppTongW; | |
203 | static const Double_t fCoolPipeSuppAngle; | |
204 | static const Double_t fCoolPipeSuppSlitL; | |
205 | static const Double_t fCoolPipeSuppAxeDist; | |
206 | static const Double_t fLay3CoolPipeSuppH; | |
207 | static const Double_t fLay4CoolPipeSuppH; | |
208 | ||
209 | static const Double_t fBTBthick; | |
210 | static const Double_t fBTBlength; | |
211 | static const Double_t fBTBwidth; | |
212 | static const Double_t fBTBaxisAtoBottom; | |
213 | static const Double_t fBTBaxisAtoBase; | |
214 | static const Double_t fRadiusAminBTB; | |
215 | static const Double_t fRadiusBminBTB; | |
216 | static const Double_t fBTBHoleLength; | |
217 | static const Double_t fBTBHolewidth; | |
218 | static const Double_t fBTBHoleRefX; | |
219 | static const Double_t fBTBHoleRefY; | |
db486a6e | 220 | |
db486a6e | 221 | Double_t fLay3LaddShortRadius; |
222 | Double_t fLay3LaddLongRadius; | |
db486a6e | 223 | |
db486a6e | 224 | Double_t fLay4LaddShortRadius; |
225 | Double_t fLay4LaddLongRadius; | |
c789ee28 | 226 | |
227 | Double_t fLay3sensorZPos[6]; | |
db486a6e | 228 | Double_t fLay4sensorZPos[8]; |
229 | ||
db486a6e | 230 | |
231 | ClassDef(AliITSv11GeometrySDD,1) // ITS v11 SDD geometry | |
232 | }; | |
233 | ||
234 | ||
235 | ||
c789ee28 | 236 | |
237 | ||
db486a6e | 238 | #endif |