Project
Loading...
Searching...
No Matches
V1Layer.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_ITS_UPGRADEV1LAYER_H_
18#define ALICEO2_ITS_UPGRADEV1LAYER_H_
19
20#include <TGeoManager.h> // for gGeoManager
21#include "Rtypes.h" // for Double_t, Int_t, Bool_t, etc
22#include "ITSSimulation/V11Geometry.h" // for V11Geometry
23
24class TGeoArb8;
25
26class TGeoCombiTrans;
27
28class TGeoVolume; // lines 15-15
29
30namespace o2
31{
32namespace its
33{
34
37class V1Layer : public V11Geometry
38{
39
40 public:
41 enum {
47 };
48
62
63 // Default constructor
64 V1Layer();
65
66 // Constructor setting debugging level
67 V1Layer(Int_t debug, const char* name = "ITS");
68
69 // Constructor setting layer number and debugging level
70 V1Layer(Int_t lay, Int_t debug, const char* name = "ITS");
71
74 V1Layer(Int_t lay, Bool_t turbo, Int_t debug, const char* name = "ITS");
75
77 V1Layer(const V1Layer& source);
78
81
83 ~V1Layer() override;
84
85 Bool_t isTurbo() const
86 {
87 return mIsTurbo;
88 };
89
90 Double_t getStaveThick() const
91 {
92 return mStaveThickness;
93 };
94
95 Double_t getStaveTilt() const
96 {
97 return mStaveTilt;
98 };
99
100 Double_t getStaveWidth() const
101 {
102 return mStaveWidth;
103 };
104
105 Double_t getSensorThick() const
106 {
107 return mSensorThickness;
108 };
109
110 Double_t getNumberOfStaves() const
111 {
112 return mNumberOfStaves;
113 };
114
115 Double_t getNumberOfChips() const
116 {
117 return mNumberOfChips;
118 };
119
120 Double_t getRadius() const
121 {
122 return mLayerRadius;
123 };
124
125 Double_t getPhi0() const
126 {
127 return mPhi0;
128 };
129
130 Double_t getZLength() const
131 {
132 return mZLength;
133 };
134
135 Int_t getChipType() const
136 {
137 return mChipTypeID;
138 }
139
141 {
142 return mHierarchy[kStave];
143 }
144
146 {
147 return mHierarchy[kHalfStave];
148 }
149
151 {
152 return mHierarchy[kModule];
153 }
154
156 {
157 return mHierarchy[kChip];
158 }
159
161 {
162 return mStaveModel;
163 }
164
165 void setStaveThick(Double_t t)
166 {
167 mStaveThickness = t;
168 };
169
172 void setStaveTilt(Double_t t);
173
176 void setStaveWidth(Double_t w);
177
178 void setSensorThick(Double_t t)
179 {
180 mSensorThickness = t;
181 };
182
184 {
185 mHierarchy[kStave] = mNumberOfStaves = n;
186 };
187
192 void setNumberOfUnits(Int_t u);
193
194 void setRadius(Double_t r)
195 {
196 mLayerRadius = r;
197 };
198
199 void setPhi0(Double_t phi)
200 {
201 mPhi0 = phi;
202 }
203
204 void setZLength(Double_t z)
205 {
206 mZLength = z;
207 };
208
209 void setChipType(Int_t tp)
210 {
211 mChipTypeID = tp;
212 }
213
214 void setBuildLevel(Int_t buildLevel)
215 {
216 mBuildLevel = buildLevel;
217 }
218
220 {
221 mStaveModel = model;
222 }
223
226 virtual void createLayer(TGeoVolume* motherVolume);
227
228 private:
234 void createLayerTurbo(TGeoVolume* motherVolume);
235
240 Double_t radiusOmTurboContainer();
241
244 TGeoVolume* createStave(const TGeoManager* mgr = gGeoManager);
245
246 // TGeoVolume* createChip(Double_t x, Double_t z, const TGeoManager *mgr=gGeoManager);
247
252 TGeoVolume* createModuleInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager);
253
257 TGeoVolume* createChipInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager);
258
262 TGeoVolume* createModuleOuterB(const TGeoManager* mgr = gGeoManager);
263
268 TGeoVolume* createStaveInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager);
269
274 TGeoVolume* createStaveStructInnerB(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
275
280 TGeoVolume* createStaveModelInnerBDummy(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager) const;
281
286 TGeoVolume* createStaveModelInnerB0(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
287
292 TGeoVolume* createStaveModelInnerB1(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
293
298 TGeoVolume* createStaveModelInnerB21(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
299
304 TGeoVolume* createStaveModelInnerB22(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
305
310 TGeoVolume* createStaveModelInnerB3(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
311
314 TGeoVolume* createStaveOuterB(const TGeoManager* mgr = gGeoManager);
315
318 TGeoVolume* createStaveModelOuterBDummy(const TGeoManager* mgr = gGeoManager) const;
319
324 TGeoVolume* createStaveModelOuterB0(const TGeoManager* mgr = gGeoManager);
325
328 TGeoVolume* createStaveModelOuterB1(const TGeoManager* mgr = gGeoManager);
329
332 TGeoVolume* createSpaceFrameOuterB(const TGeoManager* mgr = gGeoManager);
333
336 TGeoVolume* createSpaceFrameOuterBDummy(const TGeoManager* mgr = gGeoManager) const;
337
341 TGeoVolume* createSpaceFrameOuterB1(const TGeoManager* mgr = gGeoManager);
342
345 TGeoArb8* createStaveSide(const char* name, Double_t dz, Double_t angle, Double_t xSign, Double_t L, Double_t H,
346 Double_t l);
347
354 TGeoCombiTrans* createCombiTrans(const char* name, Double_t dy, Double_t dz, Double_t dphi,
355 Bool_t planeSym = kFALSE);
356
359 void addTranslationToCombiTrans(TGeoCombiTrans* ct, Double_t dx = 0, Double_t dy = 0, Double_t dz = 0) const;
360
361 Int_t mLayerNumber;
362 Double_t mPhi0;
363 Double_t mLayerRadius;
364 Double_t mZLength;
365 Double_t mSensorThickness;
366 Double_t mStaveThickness;
367 Double_t mStaveWidth;
368 Double_t mStaveTilt;
369 Int_t mNumberOfStaves;
370 Int_t mNumberOfModules;
372 Int_t mNumberOfChips;
374 Int_t mHierarchy[kNHLevels];
375
376 UInt_t mChipTypeID;
377 Bool_t mIsTurbo;
378 Int_t mBuildLevel;
379
380 Model mStaveModel;
381
382 // Parameters for the geometry
383
384 // General Parameters
385 static const Int_t sNumberOmInnerLayers;
386
387 static const Double_t sDefaultSensorThick;
388 static const Double_t sDefaultStaveThick;
389
390 // Inner Barrel Parameters
391 static const Int_t sIBChipsPerRow;
392 static const Int_t sIBNChipRows;
393
394 // Outer Barrel Parameters
395 static const Int_t sOBChipsPerRow;
396 static const Int_t sOBNChipRows;
397
398 static const Double_t sOBHalfStaveWidth;
399 static const Double_t sOBModuleWidth;
400 static const Double_t sOBModuleGap;
401 static const Double_t sOBChipXGap;
402 static const Double_t sOBChipZGap;
403 static const Double_t sOBFlexCableAlThick;
404 static const Double_t sOBFlexCableKapThick;
405 static const Double_t sOBBusCableAlThick;
406 static const Double_t sOBBusCableKapThick;
407 static const Double_t sOBCarbonPlateThick;
408 static const Double_t sOBColdPlateThick;
409 static const Double_t sOBGlueThick;
410 static const Double_t sOBModuleZLength;
411 static const Double_t sOBHalfStaveYTrans;
412 static const Double_t sOBHalfStaveXOverlap;
413 static const Double_t sOBGraphiteFoilThick;
414 static const Double_t sOBCoolTubeInnerD;
415 static const Double_t sOBCoolTubeThick;
416 static const Double_t sOBCoolTubeXDist;
417
418 static const Double_t sOBSpaceFrameWidth;
419 static const Double_t sOBSpaceFrameTotHigh;
420 static const Double_t sOBSFrameBeamRadius;
421 static const Double_t sOBSpaceFrameLa;
422 static const Double_t sOBSpaceFrameHa;
423 static const Double_t sOBSpaceFrameLb;
424 static const Double_t sOBSpaceFrameHb;
425 static const Double_t sOBSpaceFrameL;
426 static const Double_t sOBSFBotBeamAngle;
427 static const Double_t sOBSFrameBeamSidePhi;
428
429 ClassDefOverride(V1Layer, 0); // ITS v1 geometry
430};
431} // namespace its
432} // namespace o2
433
434#endif
Definition of the V11Geometry class.
std::ostringstream debug
void setZLength(Double_t z)
Definition V1Layer.h:204
void setStaveTilt(Double_t t)
Definition V1Layer.cxx:2688
void setStaveModel(Model model)
Definition V1Layer.h:219
Int_t getNumberOfModulesPerParent() const
Definition V1Layer.h:150
Double_t getZLength() const
Definition V1Layer.h:130
void setRadius(Double_t r)
Definition V1Layer.h:194
Model getStaveModel() const
Definition V1Layer.h:160
Int_t getChipType() const
Definition V1Layer.h:135
void setNumberOfStaves(Int_t n)
Definition V1Layer.h:183
Int_t getNumberOfHalfStavesPerParent() const
Definition V1Layer.h:145
Double_t getNumberOfChips() const
Definition V1Layer.h:115
Double_t getSensorThick() const
Definition V1Layer.h:105
Double_t getRadius() const
Definition V1Layer.h:120
void setNumberOfUnits(Int_t u)
Definition V1Layer.cxx:2678
Double_t getStaveTilt() const
Definition V1Layer.h:95
void setBuildLevel(Int_t buildLevel)
Definition V1Layer.h:214
Double_t getStaveWidth() const
Definition V1Layer.h:100
Double_t getNumberOfStaves() const
Definition V1Layer.h:110
virtual void createLayer(TGeoVolume *motherVolume)
Definition V1Layer.cxx:235
Double_t getStaveThick() const
Definition V1Layer.h:90
void setStaveThick(Double_t t)
Definition V1Layer.h:165
Double_t getPhi0() const
Definition V1Layer.h:125
void setChipType(Int_t tp)
Definition V1Layer.h:209
Int_t getNumberOfChipsPerParent() const
Definition V1Layer.h:155
~V1Layer() override
Default destructor.
void setSensorThick(Double_t t)
Definition V1Layer.h:178
Bool_t isTurbo() const
Definition V1Layer.h:85
V1Layer & operator=(const V1Layer &source)
Assignment operator.
Definition V1Layer.cxx:205
void setStaveWidth(Double_t w)
Definition V1Layer.cxx:2697
void setPhi0(Double_t phi)
Definition V1Layer.h:199
Int_t getNumberOfStavesPerParent() const
Definition V1Layer.h:140
GLdouble n
Definition glcorearb.h:1982
GLint GLenum GLint x
Definition glcorearb.h:403
GLuint const GLchar * name
Definition glcorearb.h:781
GLsizei GLsizei GLchar * source
Definition glcorearb.h:798
GLfloat angle
Definition glcorearb.h:4071
GLboolean r
Definition glcorearb.h:1233
GLubyte GLubyte GLubyte GLubyte w
Definition glcorearb.h:852
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...