Project
Loading...
Searching...
No Matches
HeatExchanger.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
16
17#ifndef ALICEO2_MFT_HEATEXCHANGER_H_
18#define ALICEO2_MFT_HEATEXCHANGER_H_
19
20#include "TNamed.h"
21#include "TGeoVolume.h"
22#include "TGeoMatrix.h"
23
24namespace o2
25{
26namespace mft
27{
28
30{
31
32 public:
34 HeatExchanger(Double_t Rwater, Double_t DRPipe, Double_t HeatExchangerThickness, Double_t CarbonThickness);
35
36 ~HeatExchanger() = default;
37
38 TGeoVolumeAssembly* create(Int_t kHalf, Int_t disk);
39
40 void createHalfDisk0(Int_t half);
41 void createHalfDisk1(Int_t half);
42 void createHalfDisk2(Int_t half);
43 void createHalfDisk3(Int_t half);
44 void createHalfDisk4(Int_t half);
45 void createManifold(Int_t disk);
46 void createCoolingPipes(Int_t half, Int_t disk);
47
48 Double_t getWaterRadius() { return mRWater; }
49 void setWaterRadius(Double_t& Rwater) { mRWater = Rwater; }
50
51 Double_t getPipeThickness() { return mDRPipe; }
52 void setPipeThickness(Double_t& DRPipe) { mDRPipe = DRPipe; }
53
54 Double_t getExchangerWidth() { return mHeatExchangerThickness; }
55 void setExchangerWidth(Double_t& HeatExchangerThickness) { mHeatExchangerThickness = HeatExchangerThickness; }
56
57 Double_t getCarbonThickness() { return mCarbonThickness; }
58 void setCarbonThickness(Double_t& CarbonThickness) { mCarbonThickness = CarbonThickness; }
59
60 TGeoMaterial* mMaterial;
61 TGeoMedium* mWater;
62 TGeoMedium* mPipe;
63 TGeoMedium* mCarbon;
64 TGeoMedium* mRohacell;
65 TGeoMedium* mPeek;
66
67 private:
68 void initParameters();
69
70 const static Int_t sNMaxDisks;
71
72 enum { Bottom,
73 Top };
74
75 TGeoVolumeAssembly* mHalfDisk;
76
77 TGeoRotation*** mHalfDiskRotation;
78 TGeoCombiTrans*** mHalfDiskTransformation;
79
80 Double_t mRWater; // Radius of the water
81 Double_t mDRPipe; // Thickness of the pipe
82 Double_t mHeatExchangerThickness; // width of the heat exchanger
83 Double_t mCarbonThickness; // thickness of carbon plate over 2
84 Double_t mHalfDiskGap; // gap between half disks
85
86 Double_t mRohacellThickness;
87
88 Double_t mMoreLength01; // additional length of carbon plates compare to the rohacell plate, disk 0 and 1
89 Double_t mMoreLength; // additional length of carbon plates compare to the rohacell plate
90
91 // Parameters for carbon and Rohacell
92 Int_t mNDisks; // number of planes
93 Int_t mNPart[5]; // number of part of each half-disk
94 Double_t mRMin[5]; // radius of the central hole of each disk
95 Double_t mZPlan[5]; // position on z axis of each plane
96
97 // Dimensions of carbon and Rohacell planes
98 Double_t** mSupportXDimensions;
99 Double_t** mSupportYDimensions;
100
101 // Parameters for disk0
102 Double_t mLWater0[3]; // Length of tube part
103 Double_t mXPosition0[3]; // position on x axis of each tube for disk 0
104 Double_t mAngle0[3]; // angle of the sides torus part of each pipe for disk 0
105 Double_t mRadius0[3]; // radius of the sides torus part for disk 0
106 Double_t mLpartial0[3]; // length of partial tube part
107
108 // Parameters for disk1
109 Double_t mLWater1[3]; // Length of tube part
110 Double_t mXPosition1[3]; // position on x axis of each tube for disk 1
111 Double_t mAngle1[3]; // angle of the sides torus part of each pipe for disk 1
112 Double_t mRadius1[3]; // radius of the sides torus part for disk 1
113 Double_t mLpartial1[3]; // length of partial tube part
114
115 // Parameters for disk2
116 Double_t mLWater2[3]; // Length of tube part
117 Double_t mXPosition2[3]; // position on x axis of each tube for disk 2
118 Double_t mAngle2[3]; // angle of the sides torus part of each pipe for disk 2
119 Double_t mRadius2[3]; // radius of the sides torus part for disk 2
120 Double_t mLpartial2[3]; // length of partial tube part
121
122 // Parameters for disk3
123 Double_t mLWater3[4]; // length of tube part for third plan
124 Double_t mXPosition3[4]; // tube position on x axe of each tube for disk 3
125 Double_t mAngle3[4]; // angle of sides torus of each pipe for disk 3
126 Double_t mRadius3[4]; // radius of the sides torus for disk 3
127 Double_t mAngleThirdPipe3; // angle with x axe of tube part of third pipe
128 Double_t mLpartial3[4]; // length of partial tube
129
130 Double_t mRadius3fourth[4]; // radius of fourth pipe torus of fourth pipe
131 Double_t mAngle3fourth[4]; // angle of fourth pipe torus of fourth pipe
132 Double_t mBeta3fourth[3]; // shift angle of different torus part of fourth pipe of disk 3
133
134 // Parameters for disk4
135 Double_t mLWater4[4]; // length of tube part for fourth plan
136 Double_t mXPosition4[5]; // tube position on x axe of each tube for disk 4
137 Double_t mAngle4[6]; // angle of sides torus of each pipe for disk 4
138 Double_t mRadius4[5]; // radius of the sides torus for disk 4
139 Double_t mLpartial4[4]; // length of partial tube for first and second pipe of disk 4
140 Double_t mAngle4fifth[4]; // angle of torus for fifth pipe of disk 4
141 Double_t mRadius4fifth[4]; // radius of torus for fifth pipe of disk 4
142
143 ClassDefNV(HeatExchanger, 2);
144};
145} // namespace mft
146} // namespace o2
147
148#endif
void createHalfDisk3(Int_t half)
void createHalfDisk2(Int_t half)
void setCarbonThickness(Double_t &CarbonThickness)
void setWaterRadius(Double_t &Rwater)
void setPipeThickness(Double_t &DRPipe)
void setExchangerWidth(Double_t &HeatExchangerThickness)
void createHalfDisk0(Int_t half)
Double_t getCarbonThickness()
void createHalfDisk1(Int_t half)
TGeoMaterial * mMaterial
void createCoolingPipes(Int_t half, Int_t disk)
TGeoVolumeAssembly * create(Int_t kHalf, Int_t disk)
void createHalfDisk4(Int_t half)
void createManifold(Int_t disk)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...