]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSv11GeometrySDD.h
Adding initialization
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySDD.h
... / ...
CommitLineData
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
9class TGeoVolume;
10class TGeoCombiTrans;
11class TGeoArb8;
12class TGeoNode;
13
14#include <TObjArray.h>
15
16//----------------------------------------------------------------------
17class 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//----------------------------------------------------------------------
43class 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};
54
55
56
57//----------------------------------------------------------------------
58class AliITSv11GeometrySDD : public AliITSv11Geometry {
59
60 public:
61 AliITSv11GeometrySDD();
62 AliITSv11GeometrySDD(Int_t debug);
63 virtual ~AliITSv11GeometrySDD(){};
64
65 // Main functions
66 virtual void Layer3(TGeoVolume *Moth);
67 virtual void Layer4(TGeoVolume *Moth);
68
69 // Functions for coding, testing, debugging
70 void ShowOnePiece(TGeoVolume *Moth);
71 void CheckOverlaps(Double_t precision = 0.01);
72 void AddOnlySegment(Int_t i) { fAddOnlySegment=i; };
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;
82
83 private:
84
85 // Create ladder virtual volumes and its detectors (inside layers 3 and 4)
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
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);
95
96
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);
100
101 // add (dx,dy,dz) translation to a initial TGeoCombiTrans
102 void AddTranslationToCombiTrans( TGeoCombiTrans* ct,
103 Double_t dx=0, Double_t dy=0, Double_t dz=0);
104
105 // Create one side of the CF corner of the CF structure
106 TGeoArb8* CreateLadderSide( Double_t dz, Double_t angle, Double_t xSign,
107 Double_t L, Double_t H, Double_t l);
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
113 virtual TGeoVolume* CreatePinSupport();
114
115 virtual TGeoVolume* CreateCoolPipeSupportL();
116 virtual TGeoVolume* CreateCoolPipeSupportR();
117
118 // Create a SDD detector object
119 virtual TGeoVolume* CreateSDDsensor();
120
121 // Create the base of the thermal bridge, supporting hybrids on ladder
122 virtual TGeoVolume* CreateBaseThermalBridge();
123
124 //**************************************************
125
126 Int_t fAddOnlyLadder3min;
127 Int_t fAddOnlyLadder3max;
128 Int_t fAddOnlyLadder4min;
129 Int_t fAddOnlyLadder4max;
130 Int_t fAddOnlySegment;
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;
220
221 Double_t fLay3LaddShortRadius;
222 Double_t fLay3LaddLongRadius;
223
224 Double_t fLay4LaddShortRadius;
225 Double_t fLay4LaddLongRadius;
226
227 Double_t fLay3sensorZPos[6];
228 Double_t fLay4sensorZPos[8];
229
230
231 ClassDef(AliITSv11GeometrySDD,1) // ITS v11 SDD geometry
232};
233
234
235
236
237
238#endif