1 #ifndef ALIITSV11GEOMETRYSDD_H
2 #define ALIITSV11GEOMETRYSDD_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 // Ludovic Gaudichet (Ludovic.Gaudichet@to.infn.it)
14 #include <TObjArray.h>
16 //----------------------------------------------------------------------
17 class AliITSv11GeomSDDcable: public TObject {
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,
25 void SetInitialNode(TGeoVolume *vol);
26 void ResetInitialNode();
29 bool CheckDaughter(Int_t i, TGeoNode* node);
32 TObjArray fVolumeArray;
33 TObjArray fPointArray;
34 TGeoVolume *fCurrentVol;
35 TGeoNode *fInitialNode;
37 ClassDef(AliITSv11GeomSDDcable,1) // ITS v11 SDD cable geometry
42 //----------------------------------------------------------------------
43 class AliITSv11GeomSDDcableNap : public AliITSv11GeomSDDcable {
45 AliITSv11GeomSDDcableNap(Double_t width, Double_t thick);
46 virtual ~AliITSv11GeomSDDcableNap() {};
47 Int_t CreateAndInsertCableSegment(Int_t p1, Int_t p2, TGeoVolume *motherVol);
52 ClassDef(AliITSv11GeomSDDcableNap,1) // ITS v11 SDD cable Nap geometry
57 //----------------------------------------------------------------------
58 class AliITSv11GeometrySDD : public AliITSv11Geometry {
61 AliITSv11GeometrySDD();
62 AliITSv11GeometrySDD(Int_t debug);
63 virtual ~AliITSv11GeometrySDD(){};
66 virtual void Layer3(TGeoVolume *Moth);
67 virtual void Layer4(TGeoVolume *Moth);
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;};
78 virtual void SetGeomParameters();
81 AliITSv11GeomSDDcable cable;
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();
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);
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);
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);
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);
109 // Create de CF structure in the ladder segment
110 void AddLadderCFstruct(Double_t dy, TGeoVolume* vol);
112 // Create a pin support object
113 virtual TGeoVolume* CreatePinSupport();
115 virtual TGeoVolume* CreateCoolPipeSupportL();
116 virtual TGeoVolume* CreateCoolPipeSupportR();
118 // Create a SDD detector object
119 virtual TGeoVolume* CreateSDDsensor();
121 // Create the base of the thermal bridge, supporting hybrids on ladder
122 virtual TGeoVolume* CreateBaseThermalBridge();
124 //**************************************************
126 Int_t fAddOnlyLadder3min;
127 Int_t fAddOnlyLadder3max;
128 Int_t fAddOnlyLadder4min;
129 Int_t fAddOnlyLadder4max;
130 Int_t fAddOnlySegment;
131 Int_t fColorCarbonFiber;
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;
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;
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;
171 static const Double_t fBottomBeamAngle;
172 static const Double_t fBeamSidePhi;
174 static const Double_t fWaferThickness;
175 static const Double_t fWaferWidth;
176 static const Double_t fWaferLength;
178 static const Double_t fHybridLength;
179 static const Double_t fHybridWidth;
180 static const Double_t fHybridThBridgeThick;
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;
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;
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;
221 Double_t fLay3LaddShortRadius;
222 Double_t fLay3LaddLongRadius;
224 Double_t fLay4LaddShortRadius;
225 Double_t fLay4LaddLongRadius;
227 Double_t fLay3sensorZPos[6];
228 Double_t fLay4sensorZPos[8];
231 ClassDef(AliITSv11GeometrySDD,1) // ITS v11 SDD geometry