Line data Source code
1 : #ifndef AliMFTHeatExchanger_H
2 : #define AliMFTHeatExchanger_H
3 :
4 :
5 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 : * See cxx source for full Copyright notice */
7 :
8 : // $Id$
9 :
10 : /// \ingroup MFTbase
11 : /// \class AliMFTHeatExchanger
12 : /// \brief MFT Heat Exchanger builder
13 : ///
14 : // \author Primary Author: P. Demongadin
15 : /// \author Contact : Raphael Tieulent <raphael.tieulent@cern.ch>
16 : /// \date June 9th, 2015
17 :
18 : #include "TNamed.h"
19 : #include "TGeoVolume.h"
20 : #include "TGeoMatrix.h"
21 : #include "AliMFTConstants.h"
22 :
23 0 : class AliMFTHeatExchanger : public TNamed {
24 :
25 : public:
26 :
27 : AliMFTHeatExchanger();
28 : AliMFTHeatExchanger(Double_t Rwater, Double_t DRPipe, Double_t HeatExchangerThickness, Double_t CarbonThickness);
29 :
30 0 : virtual ~AliMFTHeatExchanger() {};
31 :
32 : TGeoVolumeAssembly* Create(Int_t kHalf, Int_t disk);
33 :
34 : void CreateHalfDisk0(Int_t half);
35 : void CreateHalfDisk1(Int_t half);
36 : void CreateHalfDisk2(Int_t half);
37 : void CreateHalfDisk3(Int_t half);
38 : void CreateHalfDisk4(Int_t half);
39 :
40 0 : Double_t GetWaterRadius() { return fRWater; }
41 0 : void SetWaterRadius(Double_t &Rwater) { fRWater = Rwater; }
42 :
43 0 : Double_t GetPipeThickness() { return fDRPipe; }
44 0 : void SetPipeThickness(Double_t &DRPipe) { fDRPipe = DRPipe; }
45 :
46 0 : Double_t GetExchangerWidth() { return fHeatExchangerThickness; }
47 0 : void SetExchangerWidth(Double_t &HeatExchangerThickness) { fHeatExchangerThickness = HeatExchangerThickness; }
48 :
49 0 : Double_t GetCarbonThickness() { return fCarbonThickness; }
50 0 : void SetCarbonThickness(Double_t &CarbonThickness) { fCarbonThickness = CarbonThickness; }
51 :
52 : TGeoMaterial *material;
53 : TGeoMedium *water;
54 : TGeoMedium *pipe;
55 : TGeoMedium *carbon;
56 : TGeoMedium *rohacell;
57 :
58 : private:
59 :
60 : enum EMedia{kAir, kSi, kReadout, kSupport, kCarbon, kAlu, kWater, kSiO2, kInox, kPEEK, kFR4, kCu, kRohacell}; // media IDs used in CreateMaterials
61 :
62 : enum {kBottom, kTop, kNHalves};
63 : //TString fNameHalf[kNHalves] = {"Top", "Bottom"};
64 : const static Int_t fNMaxDisks = AliMFTConstants::fNMaxPlanes;
65 : TGeoVolumeAssembly *fHalfDisk;
66 :
67 : TGeoRotation *fHalfDiskRotation[fNMaxDisks][kNHalves];
68 : TGeoCombiTrans *fHalfDiskTransformation[fNMaxDisks][kNHalves];
69 :
70 : void InitParameters();
71 :
72 : Double_t fRWater; // Radius of the water
73 : Double_t fDRPipe; // Thickness of the pipe
74 : Double_t fHeatExchangerThickness; //width of the heat exchanger
75 : Double_t fCarbonThickness; //thickness of carbon plate over 2
76 : Double_t fHalfDiskGap; //gap between half disks
77 :
78 : Double_t fRohacellThickness;
79 :
80 : //Parameters for carbon and Rohacell
81 : Int_t fNDisks; //number of planes
82 : Int_t fnPart[5]; //number of part of each half-disk
83 : Double_t fRMin[5]; // radius of the central hole of each disk
84 : Double_t fZPlan[5]; //position on z axis of each plane
85 :
86 : //Dimensions of carbon and Rohacell planes
87 : Double_t **fSupportXDimensions;
88 : Double_t **fSupportYDimensions;
89 :
90 : //Parameters for disk0, disk1 and disk2
91 : Double_t fLWater; // Length of tube part
92 : Double_t fXPosition0[3]; //position on x axis of each tube for disk 0, 1 and 2
93 : Double_t fangle0; //angle of the sides torus part of each pipe for disk 0, 1 and 2
94 : Double_t fradius0; // radius of the sides torus part for disk 0, 1 and 2
95 : Double_t fLpartial0; // length of partial tube part
96 :
97 : //Parameters for disk3
98 : Double_t fLWater3[3]; // length of tube part for third plan
99 : Double_t fXPosition3[4]; // tube position on x axe of each tube for disk 3
100 : Double_t fangle3[3]; // angle of sides torus of each pipe for disk 3
101 : Double_t fradius3[3]; // radius of the sides torus for disk 3
102 : Double_t fangleThirdPipe3; // angle with x axe of tube part of third pipe
103 : Double_t fLpartial3[2]; // length of partial tube
104 :
105 : Double_t fradius3fourth[4]; // radius of fourth pipe torus of fourth pipe
106 : Double_t fangle3fourth[4]; // angle of fourth pipe torus of fourth pipe
107 : Double_t fbeta3fourth[3]; // shift angle of different torus part of fourth pipe of disk 3
108 :
109 : //Parameters for disk4
110 : Double_t fLwater4[3]; // length of tube part for fourth plan
111 : Double_t fXposition4[5]; // tube position on x axe of each tube for disk 4
112 : Double_t fangle4[6]; // angle of sides torus of each pipe for disk 4
113 : Double_t fradius4[5]; // radius of the sides torus for disk 4
114 : Double_t fLpartial4[2]; // length of partial tube for first and second pipe of disk 4
115 : Double_t fangle4fifth[4]; // angle of torus for fifth pipe of disk 4
116 : Double_t fradius4fifth[4]; // radius of torus for fifth pipe of disk 4
117 :
118 : /// \cond CLASSIMP
119 14 : ClassDef(AliMFTHeatExchanger, 1);
120 : /// \endcond
121 :
122 : };
123 :
124 : #endif
|