Project
Loading...
Searching...
No Matches
GeometryParams.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
12#ifndef ALICEO2_PHOS_GEOMETRYPARAMS_H_
13#define ALICEO2_PHOS_GEOMETRYPARAMS_H_
14
15#include <string>
16
17#include <RStringView.h>
18#include <TNamed.h>
19//#include <TVector3.h>
20
21namespace o2
22{
23namespace phos
24{
25class GeometryParams final : public TNamed
26{
27 public:
29 GeometryParams() = default;
30
32 ~GeometryParams() final = default;
33
35 static GeometryParams* GetInstance(const std::string_view name = "Run2")
36 {
37 if (!sGeomParam) {
38 sGeomParam = new GeometryParams(name);
39 }
40 return sGeomParam;
41 }
42
43 // Return general PHOS parameters
44 double getIPtoCrystalSurface() const { return mIPtoCrystalSurface; }
45 double getIPtoOuterCoverDistance() const { return mIPtoOuterCoverDistance; }
46 double getCrystalSize(int index) const { return 2. * mCrystalHalfSize[index]; }
47 int getNPhi() const { return mNPhi; }
48 int getNZ() const { return mNz; }
49 int getNCristalsInModule() const { return mNPhi * mNz; }
50 int getNModules() const { return mNModules; }
51 double getPHOSAngle(int index) const { return mPHOSAngle[index]; }
52 double* getPHOSParams() { return mPHOSParams; } // Half-sizes of PHOS trapecoid
53 double* getPHOSATBParams() { return mPHOSATBParams; } // Half-sizes of PHOS trapecoid
54 double getOuterBoxSize(int index) const { return 2. * mPHOSParams[index]; }
55 double getCellStep() const { return 2. * mAirCellHalfSize[0]; }
56
57 void getModuleCenter(int module, double* pos) const
58 {
59 for (int i = 0; i < 3; i++) {
60 pos[i] = mModuleCenter[module][i];
61 }
62 }
63 void getModuleAngle(int module, double angle[3][2]) const
64 {
65 for (int i = 0; i < 3; i++) {
66 for (int ian = 0; ian < 2; ian++) {
67 angle[i][ian] = mModuleAngle[module][i][ian];
68 }
69 }
70 }
71 // Return PHOS support geometry parameters
72 double getRailOuterSize(int index) const { return mRailOuterSize[index]; }
73 double getRailPart1(int index) const { return mRailPart1[index]; }
74 double getRailPart2(int index) const { return mRailPart2[index]; }
75 double getRailPart3(int index) const { return mRailPart3[index]; }
76 double getRailPos(int index) const { return mRailPos[index]; }
77 double getRailLength() const { return mRailLength; }
78 double getDistanceBetwRails() const { return mDistanceBetwRails; }
79 double getRailsDistanceFromIP() const { return mRailsDistanceFromIP; }
80 double getRailRoadSize(int index) const { return mRailRoadSize[index]; }
81 double getModuleCraddleGap() const { return mModuleCraddleGap; }
82 double getCradleWallThickness() const { return mCradleWallThickness; }
83 double getCradleWall(int index) const { return mCradleWall[index]; }
84 double getCradleWheel(int index) const { return mCradleWheel[index]; }
85
86 // Return ideal EMC geometry parameters
87 const double* getStripHalfSize() const { return mStripHalfSize; }
88 double getStripWallWidthOut() const { return mStripWallWidthOut; }
89 const double* getAirCellHalfSize() const { return mAirCellHalfSize; }
90 const double* getWrappedHalfSize() const { return mWrappedHalfSize; }
91 double getAirGapLed() const { return mAirGapLed; }
92 const double* getCrystalHalfSize() const { return mCrystalHalfSize; }
93 const double* getSupportPlateHalfSize() const { return mSupportPlateHalfSize; }
94 const double* getSupportPlateInHalfSize() const { return mSupportPlateInHalfSize; }
95 double getSupportPlateThickness() const { return mSupportPlateThickness; }
96
97 const double* getPreampHalfSize() const { return mPreampHalfSize; }
98 const double* getAPDHalfSize() const { return mPinDiodeHalfSize; }
99 const double* getOuterThermoParams() const { return mOuterThermoParams; }
100 const double* getCoolerHalfSize() const { return mCoolerHalfSize; }
101 const double* getAirGapHalfSize() const { return mAirGapHalfSize; }
102 const double* getInnerThermoHalfSize() const { return mInnerThermoHalfSize; }
103 const double* getAlCoverParams() const { return mAlCoverParams; }
104 const double* getFiberGlassHalfSize() const { return mFiberGlassHalfSize; }
105 const double* getWarmAlCoverHalfSize() const { return mWarmAlCoverHalfSize; }
106 const double* getWarmThermoHalfSize() const { return mWarmThermoHalfSize; }
107 const double* getTSupport1HalfSize() const { return mTSupport1HalfSize; }
108 const double* getTSupport2HalfSize() const { return mTSupport2HalfSize; }
109 const double* getTCables1HalfSize() const { return mTCables1HalfSize; }
110 const double* getTCables2HalfSize() const { return mTCables2HalfSize; }
111 double getTSupportDist() const { return mTSupportDist; }
112 const double* getFrameXHalfSize() const { return mFrameXHalfSize; }
113 const double* getFrameZHalfSize() const { return mFrameZHalfSize; }
114 const double* getFrameXPosition() const { return mFrameXPosition; }
115 const double* getFrameZPosition() const { return mFrameZPosition; }
116 const double* getFGupXHalfSize() const { return mFGupXHalfSize; }
117 const double* getFGupXPosition() const { return mFGupXPosition; }
118 const double* getFGupZHalfSize() const { return mFGupZHalfSize; }
119 const double* getFGupZPosition() const { return mFGupZPosition; }
120 const double* getFGlowXHalfSize() const { return mFGlowXHalfSize; }
121 const double* getFGlowXPosition() const { return mFGlowXPosition; }
122 const double* getFGlowZHalfSize() const { return mFGlowZHalfSize; }
123 const double* getFGlowZPosition() const { return mFGlowZPosition; }
124 const double* getFEEAirHalfSize() const { return mFEEAirHalfSize; }
125 const double* getFEEAirPosition() const { return mFEEAirPosition; }
126 const double* getEMCParams() const { return mEMCParams; }
127 double getDistATBtoModule() const { return mzAirTightBoxToTopModuleDist; }
128 double getATBWallWidth() const { return mATBoxWall; }
129
130 int getNCellsXInStrip() const { return mNCellsXInStrip; }
131 int getNCellsZInStrip() const { return mNCellsZInStrip; }
132 int getNStripX() const { return mNStripX; }
133 int getNStripZ() const { return mNStripZ; }
134 int getNTSuppots() const { return mNTSupports; }
135
136 private:
141 GeometryParams(const std::string_view name);
142
143 static GeometryParams* sGeomParam;
144
145 // General PHOS modules parameters
146 int mNModules;
147 double mAngle;
148 double mPHOSAngle[5];
149 double mPHOSParams[4];
150 double mPHOSATBParams[4];
151 double mCrystalShift;
152 double mCryCellShift;
153 double mModuleCenter[5][3];
154 double mModuleAngle[5][3][2];
155
156 // EMC geometry parameters
157
158 double mStripHalfSize[3];
159 double mAirCellHalfSize[3];
160 double mWrappedHalfSize[3];
161 double mSupportPlateHalfSize[3];
162 double mSupportPlateInHalfSize[3];
163 double mCrystalHalfSize[3];
164 double mAirGapLed;
165 double mStripWallWidthOut;
166 double mStripWallWidthIn;
167 double mTyvecThickness;
168 double mTSupport1HalfSize[3];
169 double mTSupport2HalfSize[3];
170 double mPreampHalfSize[3];
171 double mPinDiodeHalfSize[3];
172
173 double mOuterThermoParams[4]; // geometry parameter
174 double mCoolerHalfSize[3]; // geometry parameter
175 double mAirGapHalfSize[3]; // geometry parameter
176 double mInnerThermoHalfSize[3]; // geometry parameter
177 double mAlCoverParams[4]; // geometry parameter
178 double mFiberGlassHalfSize[3]; // geometry parameter
179
180 double mInnerThermoWidthX; // geometry parameter
181 double mInnerThermoWidthY; // geometry parameter
182 double mInnerThermoWidthZ; // geometry parameter
183 double mAirGapWidthX; // geometry parameter
184 double mAirGapWidthY; // geometry parameter
185 double mAirGapWidthZ; // geometry parameter
186 double mCoolerWidthX; // geometry parameter
187 double mCoolerWidthY; // geometry parameter
188 double mCoolerWidthZ; // geometry parameter
189 double mAlCoverThickness; // geometry parameter
190 double mOuterThermoWidthXUp; // geometry parameter
191 double mOuterThermoWidthXLow; // geometry parameter
192 double mOuterThermoWidthY; // geometry parameter
193 double mOuterThermoWidthZ; // geometry parameter
194 double mAlFrontCoverX; // geometry parameter
195 double mAlFrontCoverZ; // geometry parameter
196 double mFiberGlassSup2X; // geometry parameter
197 double mFiberGlassSup1X; // geometry parameter
198 double mFrameHeight; // geometry parameter
199 double mFrameThickness; // geometry parameter
200 double mAirSpaceFeeX; // geometry parameter
201 double mAirSpaceFeeZ; // geometry parameter
202 double mAirSpaceFeeY; // geometry parameter
203 double mTCables2HalfSize[3]; // geometry parameter
204 double mTCables1HalfSize[3]; // geometry parameter
205 double mWarmUpperThickness; // geometry parameter
206 double mWarmBottomThickness; // geometry parameter
207 double mWarmAlCoverWidthX; // geometry parameter
208 double mWarmAlCoverWidthY; // geometry parameter
209 double mWarmAlCoverWidthZ; // geometry parameter
210 double mWarmAlCoverHalfSize[3]; // geometry parameter
211 double mWarmThermoHalfSize[3]; // geometry parameter
212 double mFiberGlassSup1Y; // geometry parameter
213 double mFiberGlassSup2Y; // geometry parameter
214 double mTSupportDist; // geometry parameter
215 double mTSupport1Thickness; // geometry parameter
216 double mTSupport2Thickness; // geometry parameter
217 double mTSupport1Width; // geometry parameter
218 double mTSupport2Width; // geometry parameter
219 double mFrameXHalfSize[3]; // geometry parameter
220 double mFrameZHalfSize[3]; // geometry parameter
221 double mFrameXPosition[3]; // geometry parameter
222 double mFrameZPosition[3]; // geometry parameter
223 double mFGupXHalfSize[3]; // geometry parameter
224 double mFGupXPosition[3]; // geometry parameter
225 double mFGupZHalfSize[3]; // geometry parameter
226 double mFGupZPosition[3]; // geometry parameter
227 double mFGlowXHalfSize[3]; // geometry parameter
228 double mFGlowXPosition[3]; // geometry parameter
229 double mFGlowZHalfSize[3]; // geometry parameter
230 double mFGlowZPosition[3]; // geometry parameter
231 double mFEEAirHalfSize[3]; // geometry parameter
232 double mFEEAirPosition[3]; // geometry parameter
233 double mEMCParams[4]; // geometry parameter
234 double mIPtoOuterCoverDistance;
235 double mIPtoCrystalSurface;
236
237 double mSupportPlateThickness;
238 double mzAirTightBoxToTopModuleDist;
239 double mATBoxWall;
240
241 int mNCellsXInStrip;
242 int mNCellsZInStrip;
243 int mNStripX;
244 int mNStripZ;
245 int mNTSupports;
246 int mNPhi;
247 int mNz;
248
249 // Support geometry parameters
250 double mRailOuterSize[3];
251 double mRailPart1[3];
252 double mRailPart2[3];
253 double mRailPart3[3];
254 double mRailPos[3];
255 double mRailLength;
256 double mDistanceBetwRails;
257 double mRailsDistanceFromIP;
258 double mRailRoadSize[3];
259 double mCradleWallThickness;
260 double mModuleCraddleGap;
261 double mCradleWall[5];
262 double mCradleWheel[3];
263
264 ClassDefOverride(GeometryParams, 2);
265};
266} // namespace phos
267} // namespace o2
268#endif
int32_t i
uint16_t pos
Definition RawData.h:3
const double * getAirCellHalfSize() const
double getRailRoadSize(int index) const
const double * getCoolerHalfSize() const
const double * getFEEAirHalfSize() const
double getDistATBtoModule() const
const double * getSupportPlateHalfSize() const
double getRailLength() const
double getCradleWheel(int index) const
const double * getFGupXPosition() const
const double * getWarmThermoHalfSize() const
const double * getInnerThermoHalfSize() const
double getPHOSAngle(int index) const
double getCrystalSize(int index) const
double getATBWallWidth() const
double getRailPart2(int index) const
const double * getTCables1HalfSize() const
const double * getTSupport2HalfSize() const
const double * getFGupZHalfSize() const
const double * getFrameZHalfSize() const
double getIPtoOuterCoverDistance() const
const double * getPreampHalfSize() const
const double * getOuterThermoParams() const
double getSupportPlateThickness() const
const double * getFGlowXHalfSize() const
const double * getFrameZPosition() const
const double * getWrappedHalfSize() const
double getAirGapLed() const
double getCradleWallThickness() const
GeometryParams()=default
Default constructor.
const double * getAlCoverParams() const
void getModuleCenter(int module, double *pos) const
double getOuterBoxSize(int index) const
double getModuleCraddleGap() const
double getDistanceBetwRails() const
const double * getFGupZPosition() const
double getTSupportDist() const
const double * getFGupXHalfSize() const
const double * getStripHalfSize() const
const double * getTCables2HalfSize() const
double getStripWallWidthOut() const
~GeometryParams() final=default
Destructor.
const double * getFrameXPosition() const
const double * getFEEAirPosition() const
const double * getFGlowZPosition() const
const double * getCrystalHalfSize() const
const double * getEMCParams() const
double getRailPart3(int index) const
double getRailsDistanceFromIP() const
double getRailPos(int index) const
const double * getFiberGlassHalfSize() const
const double * getFrameXHalfSize() const
const double * getFGlowXPosition() const
const double * getAirGapHalfSize() const
void getModuleAngle(int module, double angle[3][2]) const
double getIPtoCrystalSurface() const
const double * getWarmAlCoverHalfSize() const
double getRailOuterSize(int index) const
static GeometryParams * GetInstance(const std::string_view name="Run2")
get singleton (create if necessary)
const double * getFGlowZHalfSize() const
double getRailPart1(int index) const
const double * getTSupport1HalfSize() const
const double * getSupportPlateInHalfSize() const
double getCradleWall(int index) const
const double * getAPDHalfSize() const
GLuint index
Definition glcorearb.h:781
GLuint const GLchar * name
Definition glcorearb.h:781
GLfloat angle
Definition glcorearb.h:4071
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...