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 float getIPtoCrystalSurface() const { return mIPtoCrystalSurface; }
45 float getIPtoOuterCoverDistance() const { return mIPtoOuterCoverDistance; }
46 float 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 float getPHOSAngle(int index) const { return mPHOSAngle[index]; }
52 float* getPHOSParams() { return mPHOSParams; } // Half-sizes of PHOS trapecoid
53 float* getPHOSATBParams() { return mPHOSATBParams; } // Half-sizes of PHOS trapecoid
54 float getOuterBoxSize(int index) const { return 2. * mPHOSParams[index]; }
55 float getCellStep() const { return 2. * mAirCellHalfSize[0]; }
56
57 void getModuleCenter(int module, float* pos) const
58 {
59 for (int i = 0; i < 3; i++) {
60 pos[i] = mModuleCenter[module][i];
61 }
62 }
63 void getModuleAngle(int module, float 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 float getRailOuterSize(int index) const { return mRailOuterSize[index]; }
73 float getRailPart1(int index) const { return mRailPart1[index]; }
74 float getRailPart2(int index) const { return mRailPart2[index]; }
75 float getRailPart3(int index) const { return mRailPart3[index]; }
76 float getRailPos(int index) const { return mRailPos[index]; }
77 float getRailLength() const { return mRailLength; }
78 float getDistanceBetwRails() const { return mDistanceBetwRails; }
79 float getRailsDistanceFromIP() const { return mRailsDistanceFromIP; }
80 float getRailRoadSize(int index) const { return mRailRoadSize[index]; }
81 float getModuleCraddleGap() const { return mModuleCraddleGap; }
82 float getCradleWallThickness() const { return mCradleWallThickness; }
83 float getCradleWall(int index) const { return mCradleWall[index]; }
84 float getCradleWheel(int index) const { return mCradleWheel[index]; }
85
86 // Return ideal EMC geometry parameters
87 const float* getStripHalfSize() const { return mStripHalfSize; }
88 float getStripWallWidthOut() const { return mStripWallWidthOut; }
89 const float* getAirCellHalfSize() const { return mAirCellHalfSize; }
90 const float* getWrappedHalfSize() const { return mWrappedHalfSize; }
91 float getAirGapLed() const { return mAirGapLed; }
92 const float* getCrystalHalfSize() const { return mCrystalHalfSize; }
93 const float* getSupportPlateHalfSize() const { return mSupportPlateHalfSize; }
94 const float* getSupportPlateInHalfSize() const { return mSupportPlateInHalfSize; }
95 float getSupportPlateThickness() const { return mSupportPlateThickness; }
96
97 const float* getPreampHalfSize() const { return mPreampHalfSize; }
98 const float* getAPDHalfSize() const { return mPinDiodeHalfSize; }
99 const float* getOuterThermoParams() const { return mOuterThermoParams; }
100 const float* getCoolerHalfSize() const { return mCoolerHalfSize; }
101 const float* getAirGapHalfSize() const { return mAirGapHalfSize; }
102 const float* getInnerThermoHalfSize() const { return mInnerThermoHalfSize; }
103 const float* getAlCoverParams() const { return mAlCoverParams; }
104 const float* getFiberGlassHalfSize() const { return mFiberGlassHalfSize; }
105 const float* getWarmAlCoverHalfSize() const { return mWarmAlCoverHalfSize; }
106 const float* getWarmThermoHalfSize() const { return mWarmThermoHalfSize; }
107 const float* getTSupport1HalfSize() const { return mTSupport1HalfSize; }
108 const float* getTSupport2HalfSize() const { return mTSupport2HalfSize; }
109 const float* getTCables1HalfSize() const { return mTCables1HalfSize; }
110 const float* getTCables2HalfSize() const { return mTCables2HalfSize; }
111 float getTSupportDist() const { return mTSupportDist; }
112 const float* getFrameXHalfSize() const { return mFrameXHalfSize; }
113 const float* getFrameZHalfSize() const { return mFrameZHalfSize; }
114 const float* getFrameXPosition() const { return mFrameXPosition; }
115 const float* getFrameZPosition() const { return mFrameZPosition; }
116 const float* getFGupXHalfSize() const { return mFGupXHalfSize; }
117 const float* getFGupXPosition() const { return mFGupXPosition; }
118 const float* getFGupZHalfSize() const { return mFGupZHalfSize; }
119 const float* getFGupZPosition() const { return mFGupZPosition; }
120 const float* getFGlowXHalfSize() const { return mFGlowXHalfSize; }
121 const float* getFGlowXPosition() const { return mFGlowXPosition; }
122 const float* getFGlowZHalfSize() const { return mFGlowZHalfSize; }
123 const float* getFGlowZPosition() const { return mFGlowZPosition; }
124 const float* getFEEAirHalfSize() const { return mFEEAirHalfSize; }
125 const float* getFEEAirPosition() const { return mFEEAirPosition; }
126 const float* getEMCParams() const { return mEMCParams; }
127 float getDistATBtoModule() const { return mzAirTightBoxToTopModuleDist; }
128 float 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 float mAngle;
148 float mPHOSAngle[5];
149 float mPHOSParams[4];
150 float mPHOSATBParams[4];
151 float mCrystalShift;
152 float mCryCellShift;
153 float mModuleCenter[5][3];
154 float mModuleAngle[5][3][2];
155
156 // EMC geometry parameters
157
158 float mStripHalfSize[3];
159 float mAirCellHalfSize[3];
160 float mWrappedHalfSize[3];
161 float mSupportPlateHalfSize[3];
162 float mSupportPlateInHalfSize[3];
163 float mCrystalHalfSize[3];
164 float mAirGapLed;
165 float mStripWallWidthOut;
166 float mStripWallWidthIn;
167 float mTyvecThickness;
168 float mTSupport1HalfSize[3];
169 float mTSupport2HalfSize[3];
170 float mPreampHalfSize[3];
171 float mPinDiodeHalfSize[3];
172
173 float mOuterThermoParams[4]; // geometry parameter
174 float mCoolerHalfSize[3]; // geometry parameter
175 float mAirGapHalfSize[3]; // geometry parameter
176 float mInnerThermoHalfSize[3]; // geometry parameter
177 float mAlCoverParams[4]; // geometry parameter
178 float mFiberGlassHalfSize[3]; // geometry parameter
179
180 float mInnerThermoWidthX; // geometry parameter
181 float mInnerThermoWidthY; // geometry parameter
182 float mInnerThermoWidthZ; // geometry parameter
183 float mAirGapWidthX; // geometry parameter
184 float mAirGapWidthY; // geometry parameter
185 float mAirGapWidthZ; // geometry parameter
186 float mCoolerWidthX; // geometry parameter
187 float mCoolerWidthY; // geometry parameter
188 float mCoolerWidthZ; // geometry parameter
189 float mAlCoverThickness; // geometry parameter
190 float mOuterThermoWidthXUp; // geometry parameter
191 float mOuterThermoWidthXLow; // geometry parameter
192 float mOuterThermoWidthY; // geometry parameter
193 float mOuterThermoWidthZ; // geometry parameter
194 float mAlFrontCoverX; // geometry parameter
195 float mAlFrontCoverZ; // geometry parameter
196 float mFiberGlassSup2X; // geometry parameter
197 float mFiberGlassSup1X; // geometry parameter
198 float mFrameHeight; // geometry parameter
199 float mFrameThickness; // geometry parameter
200 float mAirSpaceFeeX; // geometry parameter
201 float mAirSpaceFeeZ; // geometry parameter
202 float mAirSpaceFeeY; // geometry parameter
203 float mTCables2HalfSize[3]; // geometry parameter
204 float mTCables1HalfSize[3]; // geometry parameter
205 float mWarmUpperThickness; // geometry parameter
206 float mWarmBottomThickness; // geometry parameter
207 float mWarmAlCoverWidthX; // geometry parameter
208 float mWarmAlCoverWidthY; // geometry parameter
209 float mWarmAlCoverWidthZ; // geometry parameter
210 float mWarmAlCoverHalfSize[3]; // geometry parameter
211 float mWarmThermoHalfSize[3]; // geometry parameter
212 float mFiberGlassSup1Y; // geometry parameter
213 float mFiberGlassSup2Y; // geometry parameter
214 float mTSupportDist; // geometry parameter
215 float mTSupport1Thickness; // geometry parameter
216 float mTSupport2Thickness; // geometry parameter
217 float mTSupport1Width; // geometry parameter
218 float mTSupport2Width; // geometry parameter
219 float mFrameXHalfSize[3]; // geometry parameter
220 float mFrameZHalfSize[3]; // geometry parameter
221 float mFrameXPosition[3]; // geometry parameter
222 float mFrameZPosition[3]; // geometry parameter
223 float mFGupXHalfSize[3]; // geometry parameter
224 float mFGupXPosition[3]; // geometry parameter
225 float mFGupZHalfSize[3]; // geometry parameter
226 float mFGupZPosition[3]; // geometry parameter
227 float mFGlowXHalfSize[3]; // geometry parameter
228 float mFGlowXPosition[3]; // geometry parameter
229 float mFGlowZHalfSize[3]; // geometry parameter
230 float mFGlowZPosition[3]; // geometry parameter
231 float mFEEAirHalfSize[3]; // geometry parameter
232 float mFEEAirPosition[3]; // geometry parameter
233 float mEMCParams[4]; // geometry parameter
234 float mIPtoOuterCoverDistance;
235 float mIPtoCrystalSurface;
236
237 float mSupportPlateThickness;
238 float mzAirTightBoxToTopModuleDist;
239 float 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 float mRailOuterSize[3];
251 float mRailPart1[3];
252 float mRailPart2[3];
253 float mRailPart3[3];
254 float mRailPos[3];
255 float mRailLength;
256 float mDistanceBetwRails;
257 float mRailsDistanceFromIP;
258 float mRailRoadSize[3];
259 float mCradleWallThickness;
260 float mModuleCraddleGap;
261 float mCradleWall[5];
262 float mCradleWheel[3];
263
264 ClassDefOverride(GeometryParams, 1);
265};
266} // namespace phos
267} // namespace o2
268#endif
int32_t i
uint16_t pos
Definition RawData.h:3
const float * getFGupZPosition() const
void getModuleCenter(int module, float *pos) const
float getRailPos(int index) const
float getSupportPlateThickness() const
const float * getWarmAlCoverHalfSize() const
const float * getFrameXHalfSize() const
const float * getAPDHalfSize() const
const float * getInnerThermoHalfSize() const
float getRailPart3(int index) const
float getPHOSAngle(int index) const
const float * getOuterThermoParams() const
GeometryParams()=default
Default constructor.
float getRailOuterSize(int index) const
const float * getFrameZHalfSize() const
const float * getSupportPlateInHalfSize() const
const float * getStripHalfSize() const
const float * getFGupXPosition() const
float getDistanceBetwRails() const
const float * getFGlowZHalfSize() const
const float * getFEEAirHalfSize() const
void getModuleAngle(int module, float angle[3][2]) const
const float * getCoolerHalfSize() const
const float * getSupportPlateHalfSize() const
const float * getWarmThermoHalfSize() const
float getRailRoadSize(int index) const
const float * getFGlowXHalfSize() const
const float * getTCables1HalfSize() const
const float * getPreampHalfSize() const
const float * getFEEAirPosition() const
const float * getCrystalHalfSize() const
float getRailPart1(int index) const
const float * getFGupXHalfSize() const
const float * getFrameZPosition() const
~GeometryParams() final=default
Destructor.
const float * getFGlowZPosition() const
const float * getEMCParams() const
const float * getAirCellHalfSize() const
float getIPtoOuterCoverDistance() const
float getCradleWheel(int index) const
float getIPtoCrystalSurface() const
const float * getAirGapHalfSize() const
float getModuleCraddleGap() const
const float * getTCables2HalfSize() const
const float * getFGlowXPosition() const
const float * getTSupport2HalfSize() const
const float * getFiberGlassHalfSize() const
float getDistATBtoModule() const
float getRailsDistanceFromIP() const
const float * getWrappedHalfSize() const
const float * getFrameXPosition() const
float getCrystalSize(int index) const
float getStripWallWidthOut() const
static GeometryParams * GetInstance(const std::string_view name="Run2")
get singleton (create if necessary)
const float * getFGupZHalfSize() const
float getCradleWallThickness() const
float getOuterBoxSize(int index) const
const float * getTSupport1HalfSize() const
float getCradleWall(int index) const
float getRailPart2(int index) const
const float * getAlCoverParams() 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 ...
Defining DataPointCompositeObject explicitly as copiable.