FairRoot/PandaRoot
PndGeoHypGeCluster.h
Go to the documentation of this file.
1 // ******** Header of base class to support the building of HypGe cluster geometries *************
2 // by steinen@kph.uni-mainz.de
3 
4 #ifndef PNDGEOHYPGECLUSTER_H
5 #define PNDGEOHYPGECLUSTER_H
6 
7 #include "PndGeoHypGeCrystal.h"
8 #include "PndGeoHypGeBase.h"
9 
10 
12 {
13 protected:
14  //Media
15  TGeoMedium *Ge;
16  TGeoMedium *Al;
17  TGeoMedium *Cu;
18 
21  TGeoVolume *ClusterAssembly;
22 
26 
33 
34 
35  TGeoRotation *Crystal1Rotation;
36  TGeoRotation *Crystal2Rotation;
37  TGeoRotation *Crystal3Rotation;
38 
39  TGeoCombiTrans *Crystal1Position;
40  TGeoCombiTrans *Crystal2Position;
41  TGeoCombiTrans *Crystal3Position;
42 
43 //objects/variables to build the cryostat
52 
58 
64 
65  TGeoTranslation *CryostatFrontTranslation;
66 
79 
92 
93  TGeoTranslation *CryostatLowerTranslation;
94 
107 
120 
121  TGeoTranslation *CryostatMiddleTranslation;
122 
135 
148 
149  TGeoTranslation *CryostatUpperTranslation;
150 
156 
157  TGeoArb8 *CryostatTopArb8_1;
158  TGeoArb8 *CryostatTopArb8_2;
159  TGeoArb8 *CryostatTopArb8_3;
160  TGeoArb8 *CryostatTopArb8_4;
161  TGeoArb8 *CryostatTopArb8_5;
162 
163  TGeoTranslation *CryostatTopTranslation;
164 
165  //old!!!!!
166  /*Double_t CryostatHeight;
167  Double_t CryostatFrontThickness;
168  Double_t CryostatUpperPartHeight;
169  // lots of storage for coordinates
170  Double_t *CryostatOuterArb8XY_1;
171  Double_t *CryostatOuterArb8XY_2;
172  Double_t *CryostatOuterArb8XY_3;
173  Double_t *CryostatOuterArb8XY_4;
174  Double_t *CryostatOuterArb8XY_5;
175  Double_t *CryostatOuterArb8XY_6;
176  Double_t *CryostatOuterArb8XY_7;
177  Double_t *CryostatOuterArb8XY_8;
178  Double_t *CryostatOuterArb8XY_9;
179  Double_t *CryostatOuterArb8XY_10;
180  Double_t *CryostatOuterArb8XY_11;
181  Double_t *CryostatOuterArb8XY_12;
182 
183  Double_t *CryostatInnerArb8XY_1;
184  Double_t *CryostatInnerArb8XY_2;
185  Double_t *CryostatInnerArb8XY_3;
186  Double_t *CryostatInnerArb8XY_4;
187  Double_t *CryostatInnerArb8XY_5;
188 
189  //upper parts
190 
191  Double_t *CryostatUpperArb8XY_1;
192  Double_t *CryostatUpperArb8XY_2;
193  Double_t *CryostatUpperArb8XY_3;
194  Double_t *CryostatUpperArb8XY_4;
195  Double_t *CryostatUpperArb8XY_5;
196  Double_t *CryostatUpperArb8XY_6;
197  Double_t *CryostatUpperArb8XY_7;
198  Double_t *CryostatUpperArb8XY_8;
199  Double_t *CryostatUpperArb8XY_9;
200  Double_t *CryostatUpperArb8XY_10;
201  Double_t *CryostatUpperArb8XY_11;
202  Double_t *CryostatUpperArb8XY_12;
203 
204  //top
205 
206  //the single parts of the cryostat
207  TGeoArb8 *CryostatOuterArb8_1;
208  TGeoArb8 *CryostatOuterArb8_2;
209  TGeoArb8 *CryostatOuterArb8_3;
210  TGeoArb8 *CryostatOuterArb8_4;
211  TGeoArb8 *CryostatOuterArb8_5;
212  TGeoArb8 *CryostatOuterArb8_6;
213  TGeoArb8 *CryostatOuterArb8_7;
214  TGeoArb8 *CryostatOuterArb8_8;
215  TGeoArb8 *CryostatOuterArb8_9;
216  TGeoArb8 *CryostatOuterArb8_10;
217 
218  TGeoArb8 *CryostatInnerArb8_1;
219  TGeoArb8 *CryostatInnerArb8_2;
220  TGeoArb8 *CryostatInnerArb8_3;
221  TGeoArb8 *CryostatInnerArb8_4;
222  TGeoArb8 *CryostatInnerArb8_5;
223 
224  //upper
225  TGeoArb8 *CryostatUpperArb8_1;
226  TGeoArb8 *CryostatUpperArb8_2;
227  TGeoArb8 *CryostatUpperArb8_3;
228  TGeoArb8 *CryostatUpperArb8_4;
229  TGeoArb8 *CryostatUpperArb8_5;
230  TGeoArb8 *CryostatUpperArb8_6;
231  TGeoArb8 *CryostatUpperArb8_7;
232  TGeoArb8 *CryostatUpperArb8_8;
233  TGeoArb8 *CryostatUpperArb8_9;
234  TGeoArb8 *CryostatUpperArb8_10;
235  TGeoArb8 *CryostatUpperArb8_11;
236  TGeoArb8 *CryostatUpperArb8_12;
237 
238  //top
239 
240  Double_t *CryostatTopXCoordinates;
241  Double_t *CryostatTopYCoordinates;
242  Double_t CryostatTopThickness;
243  TGeoXtru *CryostatTopShape;
244  // combination
245  */
246  //TGeoTranslation *CryostatInnerZTranslation;
247  //TGeoTranslation *CryostatUpperPartsZTranslation;
248  TGeoCompositeShape *CryostatShape;
249  TGeoCombiTrans *CryostatCombiTrans;
250  TGeoVolume *Cryostat;
251  //TGeoCombiTrans *CryostatTopCombiTrans;
252  //TGeoVolume *CryostatTop;
253 
254  TGeoCompositeShape *ColdFingerShape;
255  TGeoVolume *ColdFinger;
256 
258 
262  Double_t ClusterEulerAnglePsi; //first angle aroud z-axis
263  Double_t ClusterEulerAngleTheta; //second angle around new x-axis (x')
264  Double_t ClusterEulerAnglePhi; //third angle around new z-axis (z'')
265 
266 
267 
268 public:
269  PndGeoHypGeCluster(){}; // do not use!
270 
272 
273 
274 
275  // -------- gives the copy number of the last placed cluster. If no cluster placed yet, returns the starting cluster number ----
276  Int_t GetClusterNumber();
277 
278  // -------- gives the starting cluster number (number giving @ construction) ------
279  Int_t GetStartClusterNumber();
280 
281  // -------- gives the number of placed clusters -----
282  Int_t GetNumberOfCopies();
283 
284  void GetExternalParameters(Int_t NumberOfValues,Double_t *DataArray);
286  virtual void BuildCrystals(Int_t *CrystalNumber) = 0;
287  virtual void BuildCryostat() = 0;
288 
289  virtual void PrintNodes(Int_t nLevels ) =0;
290 
291  void SetCryostatTransparency(Int_t ExtTransparency );
292  void SetCryostatColor( Color_t ExtColor);
293 
294  void PlaceCluster(TGeoVolume *top, TGeoMatrix* ClusterPlaceAndDirectionTranslation,Int_t *CrystalNumber); // places the triple cluster
295  void PlaceCluster(TGeoVolume *top, Double_t x, Double_t y, Double_t z, Double_t GlobalZOffset , Double_t phi, Double_t theta, Double_t psi,Int_t *CrystalNumber);
296  void PlaceCluster(TGeoVolume *top, Double_t GlobalZOffset, Double_t Radius , Double_t phi, Double_t theta, Double_t psi,Int_t *CrystalNumber);// can be used for radial-symmetric arrangements
297 
298  ClassDef(PndGeoHypGeCluster,0); // Class for GeoHypGeCluster
299 };
300 
301 #endif /* !PNDGEOHYPGECLUSTER_H */
TGeoArb8 * CryostatLowerArb8_5
Double_t * CryostatMiddleArb8XY_12
void GetExternalParameters(Int_t NumberOfValues, Double_t *DataArray)
TGeoRotation * Crystal2Rotation
TGeoArb8 * CryostatMiddleArb8_2
Double_t * CryostatFrontArb8XY_5
TGeoArb8 * CryostatFrontArb8_5
Double_t * CryostatLowerArb8XY_11
TGeoCombiTrans * CryostatCombiTrans
TGeoTranslation * CryostatMiddleTranslation
Double_t * CryostatTopArb8XY_5
PndGeoHypGeCrystal * Crystal2
TGeoArb8 * CryostatLowerArb8_10
Double_t * CryostatMiddleArb8XY_6
TGeoArb8 * CryostatUpperArb8_5
Double_t * CryostatUpperArb8XY_7
Double_t * CryostatMiddleArb8XY_11
TGeoVolume * ClusterAssembly
PndGeoHypGeCrystal * Crystal3
TGeoArb8 * CryostatUpperArb8_8
Double_t CryostatMiddleArb8Heigt
TGeoTranslation * CryostatLowerTranslation
Double_t * CryostatUpperArb8XY_3
TGeoCombiTrans * Crystal2Position
TGeoArb8 * CryostatMiddleArb8_12
TGeoArb8 * CryostatMiddleArb8_3
Double_t * CryostatMiddleArb8XY_2
Double_t * CryostatUpperArb8XY_2
PndGeoHypGeCrystal * Crystal1
TGeoArb8 * CryostatUpperArb8_9
TGeoArb8 * CryostatLowerArb8_7
Double_t * CryostatMiddleArb8XY_8
Double_t * CryostatUpperArb8XY_12
void SetCryostatColor(Color_t ExtColor)
Double_t * CryostatTopArb8XY_1
TGeoArb8 * CryostatLowerArb8_2
TGeoTranslation * CryostatUpperTranslation
TGeoVolume * top
TGeoArb8 * CryostatUpperArb8_10
TGeoArb8 * CryostatLowerArb8_12
TGeoCompositeShape * CryostatShape
TGeoArb8 * CryostatFrontArb8_1
Double_t * CryostatLowerArb8XY_1
Double_t * CryostatMiddleArb8XY_10
Double_t * CryostatLowerArb8XY_3
TGeoArb8 * CryostatUpperArb8_6
virtual void PrintNodes(Int_t nLevels)=0
TGeoRotation * Crystal3Rotation
Double_t * CryostatLowerArb8XY_6
TGeoArb8 * CryostatUpperArb8_7
Double_t * CryostatUpperArb8XY_4
TGeoArb8 * CryostatMiddleArb8_7
Double_t
TGeoArb8 * CryostatUpperArb8_3
Double_t * CryostatUpperArb8XY_11
Double_t * CryostatLowerArb8XY_5
Double_t * CryostatFrontArb8XY_1
ClassDef(PndGeoHypGeCluster, 0)
virtual void BuildCrystals(Int_t *CrystalNumber)=0
TGeoArb8 * CryostatUpperArb8_12
Double_t * CryostatTopArb8XY_2
Double_t * CryostatMiddleArb8XY_4
TGeoArb8 * CryostatUpperArb8_4
TGeoArb8 * CryostatFrontArb8_3
TGeoCombiTrans * Crystal1Position
TGeoTranslation * CryostatTopTranslation
Double_t * CryostatUpperArb8XY_10
Double_t * CryostatUpperArb8XY_8
Double_t * CryostatFrontArb8XY_2
TGeoArb8 * CryostatFrontArb8_2
TGeoArb8 * CryostatUpperArb8_1
TGeoArb8 * CryostatLowerArb8_3
Double_t z
Double_t * CryostatFrontArb8XY_4
TGeoRotation * Crystal1Rotation
Double_t * CryostatLowerArb8XY_10
Double_t * CryostatMiddleArb8XY_1
TGeoArb8 * CryostatLowerArb8_1
TGeoArb8 * CryostatUpperArb8_11
Double_t * CryostatMiddleArb8XY_3
Double_t * CryostatUpperArb8XY_9
TGeoArb8 * CryostatLowerArb8_9
TGeoArb8 * CryostatMiddleArb8_4
TGeoArb8 * CryostatMiddleArb8_5
TGeoArb8 * CryostatMiddleArb8_8
TGeoArb8 * CryostatMiddleArb8_10
TGeoArb8 * CryostatLowerArb8_11
Double_t * CryostatUpperArb8XY_5
Double_t * CryostatLowerArb8XY_7
Double_t * CryostatLowerArb8XY_12
Double_t x
TGeoArb8 * CryostatFrontArb8_4
void PlaceCluster(TGeoVolume *top, TGeoMatrix *ClusterPlaceAndDirectionTranslation, Int_t *CrystalNumber)
Double_t * CryostatMiddleArb8XY_5
void SetCryostatTransparency(Int_t ExtTransparency)
Double_t * CryostatLowerArb8XY_9
TGeoCombiTrans * Crystal3Position
Double_t * CryostatMiddleArb8XY_7
TGeoArb8 * CryostatLowerArb8_4
TGeoArb8 * CryostatMiddleArb8_6
Double_t * CryostatTopArb8XY_4
Double_t * CryostatLowerArb8XY_2
TGeoArb8 * CryostatLowerArb8_6
TGeoArb8 * CryostatUpperArb8_2
TGeoTranslation * CryostatFrontTranslation
Double_t y
TGeoArb8 * CryostatLowerArb8_8
Double_t * CryostatUpperArb8XY_1
Double_t * CryostatLowerArb8XY_8
Double_t * CryostatMiddleArb8XY_9
TGeoArb8 * CryostatMiddleArb8_1
Double_t * CryostatUpperArb8XY_6
TGeoArb8 * CryostatMiddleArb8_9
TGeoArb8 * CryostatMiddleArb8_11
TGeoCompositeShape * ColdFingerShape
virtual void BuildCryostat()=0
Double_t * CryostatFrontArb8XY_3
Double_t * CryostatTopArb8XY_3
Double_t * CryostatLowerArb8XY_4