Project
Loading...
Searching...
No Matches
V3Layer.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_UPGRADEV3LAYER_H_
18#define ALICEO2_ITS_UPGRADEV3LAYER_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 TGeoXtru;
25
26class TGeoCombiTrans;
27
28class TGeoVolume; // lines 15-15
29
30namespace o2
31{
32namespace its
33{
34
37class V3Layer : public V11Geometry
38{
39
40 public:
47
61
62 // Default constructor
63 V3Layer();
64
67 V3Layer(Int_t lay, Bool_t turbo = kFALSE, Int_t debug = 0, const char* name = "ITS");
68
70 V3Layer(const V3Layer&) = default;
71
73 V3Layer& operator=(const V3Layer&) = default;
74
76 ~V3Layer() override;
77
78 Bool_t isTurbo() const { return mIsTurbo; };
79
80 Double_t getChipThick() const { return mChipThickness; };
81
82 Double_t getStaveTilt() const { return mStaveTilt; };
83
84 Double_t getStaveWidth() const { return mStaveWidth; };
85
86 Double_t getSensorThick() const { return mSensorThickness; };
87
88 Double_t getNumberOfStaves() const { return mNumberOfStaves; };
89
90 Double_t getNumberOfChips() const { return mNumberOfChips; };
91
92 Double_t getRadius() const { return mLayerRadius; };
93
94 Double_t getPhi0() const { return mPhi0; };
95
96 Double_t getIBModuleZLength() const { return mIBModuleZLength; };
97
98 Double_t getOBModuleZLength() const { return mOBModuleZLength; };
99
100 Int_t getChipType() const { return mChipTypeID; }
101
102 Int_t getNumberOfHalfBarrelsPerParent() const { return mHierarchy[kHalfBarrel]; }
103
104 Int_t getNumberOfStavesPerParent() const { return mHierarchy[kStave]; }
105
106 Int_t getNumberOfHalfStavesPerParent() const { return mHierarchy[kHalfStave]; }
107
108 Int_t getNumberOfModulesPerParent() const { return mHierarchy[kModule]; }
109
110 Int_t getNumberOfChipsPerParent() const { return mHierarchy[kChip]; }
111
112 Int_t getBuildLevel() const { return mBuildLevel; }
113
114 Model getStaveModel() const { return mStaveModel; }
115
116 void setChipThick(Double_t t) { mChipThickness = t; };
117
120 void setStaveTilt(Double_t t);
121
124 void setStaveWidth(Double_t w);
125
126 void setSensorThick(Double_t t) { mSensorThickness = t; };
127
128 void setNumberOfStaves(Int_t n) { mHierarchy[kStave] = mNumberOfStaves = n; };
129
134 void setNumberOfUnits(Int_t u);
135
136 void setRadius(Double_t r) { mLayerRadius = r; };
137
138 void setPhi0(Double_t phi) { mPhi0 = phi; }
139
140 void setChipType(Int_t tp) { mChipTypeID = tp; }
141
142 void setBuildLevel(Int_t buildLevel) { mBuildLevel = buildLevel; }
143
144 void setStaveModel(Model model) { mStaveModel = model; }
145
148 virtual void createLayer(TGeoVolume* motherVolume);
149
150 private:
152 TGeoVolume* createHalfBarrel();
153
159 TGeoVolume* createHalfBarrelTurbo();
160
165 Double_t radiusOmTurboContainer();
166
169 TGeoVolume* createStave(const TGeoManager* mgr = gGeoManager);
170
176 TGeoVolume* createModuleInnerB(const Double_t xchip, const Double_t zchip, const TGeoManager* mgr = gGeoManager);
177
181 TGeoVolume* createModuleOuterB(const TGeoManager* mgr = gGeoManager);
182
187 TGeoVolume* createIBFPCAlGnd(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
188
193 TGeoVolume* createIBFPCAlAnode(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager);
194
200 void createIBCapacitors(TGeoVolume* modvol, Double_t zchip, Double_t yzero, const TGeoManager* mgr = gGeoManager);
201
206 Double_t createStaveInnerB(TGeoVolume* mother, const TGeoManager* mgr = gGeoManager);
207
210 TGeoVolume* createStaveStructInnerB(const TGeoManager* mgr = gGeoManager);
211
214 TGeoVolume* createStaveModelInnerBDummy(const TGeoManager* mgr = gGeoManager) const;
215
218 TGeoVolume* createStaveModelInnerB4(const TGeoManager* mgr = gGeoManager);
219
222 void createIBConnectors(const TGeoManager* mgr = gGeoManager);
223
226 void createIBConnectorsASide(const TGeoManager* mgr = gGeoManager);
227
230 void createIBConnectorsCSide(const TGeoManager* mgr = gGeoManager);
231
236 TGeoVolume* createOBFPCCuGnd(Double_t z, const TGeoManager* mgr = gGeoManager);
237
242 TGeoVolume* createOBFPCCuSig(Double_t z, const TGeoManager* mgr = gGeoManager);
243
248 TGeoVolume* createOBPowerBiasBuses(Double_t z, const TGeoManager* mgr = gGeoManager);
249
252 TGeoVolume* createStaveOuterB(const TGeoManager* mgr = gGeoManager);
253
256 TGeoVolume* createStaveModelOuterBDummy(const TGeoManager* mgr = gGeoManager) const;
257
260 TGeoVolume* createStaveModelOuterB2(const TGeoManager* mgr = gGeoManager);
261
263 void createOBColdPlateConnectors();
264
266 void createOBColdPlateConnectorsASide();
267
269 void createOBColdPlateConnectorsCSide();
270
273 TGeoVolume* createSpaceFrameOuterB(const TGeoManager* mgr = gGeoManager);
274
277 TGeoVolume* createSpaceFrameOuterBDummy(const TGeoManager* mgr = gGeoManager) const;
278
282 TGeoVolume* createSpaceFrameOuterB2(const TGeoManager* mgr = gGeoManager);
283
286 void createOBSpaceFrameObjects(const TGeoManager* mgr = gGeoManager);
287
293 void createOBSpaceFrameConnector(TGeoVolume* mother, const Double_t ymot, const Double_t zmot, const Bool_t sideA, const TGeoManager* mgr = gGeoManager);
294
304 TGeoXtru* createStaveSide(const char* name, Double_t dz, Double_t alpha, Double_t beta, Double_t L, Double_t H,
305 Bool_t top);
306
313 TGeoCombiTrans* createCombiTrans(const char* name, Double_t dy, Double_t dz, Double_t dphi, Bool_t planeSym = kFALSE);
314
317 void addTranslationToCombiTrans(TGeoCombiTrans* ct, Double_t dx = 0, Double_t dy = 0, Double_t dz = 0) const;
318
319 Int_t mLayerNumber;
320 Double_t mPhi0;
321 Double_t mLayerRadius;
322 Double_t mSensorThickness;
323 Double_t mChipThickness;
324 Double_t mStaveWidth;
325 Double_t mStaveTilt;
326 Int_t mNumberOfStaves;
327 Int_t mNumberOfModules;
329 Int_t mNumberOfChips;
331 Int_t mHierarchy[kNHLevels];
332
333 UInt_t mChipTypeID;
334 Bool_t mIsTurbo;
335 Int_t mBuildLevel;
336
337 Model mStaveModel;
338
339 // Dimensions computed during geometry build-up
340 Double_t mIBModuleZLength;
341 Double_t mOBModuleZLength;
342
343 // Parameters for the geometry
344
345 // General Parameters
346 static const Int_t sNumberOfInnerLayers;
347
348 static const Double_t sDefaultSensorThick;
349 static const Double_t sMetalLayerThick;
350
351 // Inner Barrel Parameters
352 static const Int_t sIBChipsPerRow;
353 static const Int_t sIBNChipRows;
354 static const Double_t sIBChipZGap;
355
356 static const Double_t sIBModuleZLength;
357 static const Double_t sIBFPCWiderXPlus;
358 static const Double_t sIBFPCWiderXNeg;
359 static const Double_t sIBFlexCableAlThick;
360 static const Double_t sIBFPCAlGNDWidth;
361 static const Double_t sIBFPCAlAnodeWidth1;
362 static const Double_t sIBFPCAlAnodeWidth2;
363 static const Double_t sIBFlexCableKapThick;
364 static const Double_t sIBFlexCablePolyThick;
365 static const Double_t sIBFlexCapacitorXWid;
366 static const Double_t sIBFlexCapacitorYHi;
367 static const Double_t sIBFlexCapacitorZLen;
368 static const Double_t sIBColdPlateWidth;
369 static const Double_t sIBColdPlateZLen;
370 static const Double_t sIBGlueThick;
371 static const Double_t sIBCarbonFleeceThick;
372 static const Double_t sIBCarbonPaperThick;
373 static const Double_t sIBCarbonPaperWidth;
374 static const Double_t sIBCarbonPaperZLen;
375 static const Double_t sIBK13D2UThick;
376 static const Double_t sIBCoolPipeInnerD;
377 static const Double_t sIBCoolPipeThick;
378 static const Double_t sIBCoolPipeXDist;
379 static const Double_t sIBCoolPipeZLen;
380 static const Double_t sIBTopVertexWidth1;
381 static const Double_t sIBTopVertexWidth2;
382 static const Double_t sIBTopVertexHeight;
383 static const Double_t sIBTopVertexAngle;
384 static const Double_t sIBSideVertexWidth;
385 static const Double_t sIBSideVertexHeight;
386 static const Double_t sIBTopFilamentSide;
387 static const Double_t sIBTopFilamentAlpha;
388 static const Double_t sIBTopFilamentInterZ;
389 static const Double_t sIBEndSupportThick;
390 static const Double_t sIBEndSupportZLen;
391 static const Double_t sIBEndSupportXUp;
392 static const Double_t sIBEndSupportOpenPhi;
393
394 static const Double_t sIBConnectorXWidth;
395 static const Double_t sIBConnectorYTot;
396 static const Double_t sIBConnectBlockZLen;
397 static const Double_t sIBConnBodyYHeight;
398 static const Double_t sIBConnTailYMid;
399 static const Double_t sIBConnTailYShift;
400 static const Double_t sIBConnTailZLen;
401 static const Double_t sIBConnTailOpenPhi;
402 static const Double_t sIBConnRoundHoleD;
403 static const Double_t sIBConnRoundHoleZ;
404 static const Double_t sIBConnSquareHoleX;
405 static const Double_t sIBConnSquareHoleZ;
406 static const Double_t sIBConnSquareHoleZPos;
407 static const Double_t sIBConnInsertHoleD;
408 static const Double_t sIBConnInsertHoleZPos;
409 static const Double_t sIBConnTubeHole1D;
410 static const Double_t sIBConnTubeHole1ZLen;
411 static const Double_t sIBConnTubeHole1ZLen2;
412 static const Double_t sIBConnTubeHole2D;
413 static const Double_t sIBConnTubeHole3XPos;
414 static const Double_t sIBConnTubeHole3ZPos;
415 static const Double_t sIBConnTubesXDist;
416 static const Double_t sIBConnTubesYPos;
417 static const Double_t sIBConnInsertD;
418 static const Double_t sIBConnInsertHeight;
419 static const Double_t sIBConnSideHole1D;
420 static const Double_t sIBConnSideHole1YPos;
421 static const Double_t sIBConnSideHole1ZPos;
422 static const Double_t sIBConnSideHole1XWid;
423 static const Double_t sIBConnSideHole2YPos;
424 static const Double_t sIBConnSideHole2ZPos;
425 static const Double_t sIBConnSideHole2XWid;
426 static const Double_t sIBConnSideHole2YWid;
427 static const Double_t sIBConnSideHole2ZWid;
428 static const Double_t sIBConnectAFitExtD;
429 static const Double_t sIBConnectAFitIntD;
430 static const Double_t sIBConnectAFitZLen;
431 static const Double_t sIBConnectAFitZOut;
432 static const Double_t sIBConnPlugInnerD;
433 static const Double_t sIBConnPlugTotLen;
434 static const Double_t sIBConnPlugInnerLen;
435
436 static const Double_t sIBStaveHeight;
437
438 // Outer Barrel Parameters
439 static const Int_t sOBChipsPerRow;
440 static const Int_t sOBNChipRows;
441
442 static const Double_t sOBChipThickness;
443
444 static const Double_t sOBHalfStaveWidth;
445 static const Double_t sOBModuleGap;
446 static const Double_t sOBChipXGap;
447 static const Double_t sOBChipZGap;
448 static const Double_t sOBFlexCableXWidth;
449 static const Double_t sOBFlexCableAlThick;
450 static const Double_t sOBFlexCableKapThick;
451 static const Double_t sOBFPCSoldMaskThick;
452 static const Double_t sOBFPCCopperThick;
453 static const Double_t sOBFPCCuAreaFracGnd;
454 static const Double_t sOBFPCCuAreaFracSig;
455 static const Double_t sOBGlueFPCThick;
456 static const Double_t sOBGlueColdPlThick;
457 static const Double_t sOBPowerBusXWidth;
458 static const Double_t sOBPowerBusAlThick;
459 static const Double_t sOBPowerBusAlFrac;
460 static const Double_t sOBPowerBusDielThick;
461 static const Double_t sOBPowerBusKapThick;
462 static const Double_t sOBBiasBusXWidth;
463 static const Double_t sOBBiasBusAlThick;
464 static const Double_t sOBBiasBusAlFrac;
465 static const Double_t sOBBiasBusDielThick;
466 static const Double_t sOBBiasBusKapThick;
467 static const Double_t sOBColdPlateXWidth;
468 static const Double_t sOBColdPlateZLenML;
469 static const Double_t sOBColdPlateZLenOL;
470 static const Double_t sOBColdPlateThick;
471 static const Double_t sOBHalfStaveYPos;
472 static const Double_t sOBHalfStaveYTrans;
473 static const Double_t sOBHalfStaveXOverlap;
474 static const Double_t sOBGraphiteFoilThick;
475 static const Double_t sOBCarbonFleeceThick;
476 static const Double_t sOBCoolTubeInnerD;
477 static const Double_t sOBCoolTubeThick;
478 static const Double_t sOBCoolTubeXDist;
479
480 static const Double_t sOBCPConnectorXWidth;
481 static const Double_t sOBCPConnBlockZLen;
482 static const Double_t sOBCPConnBlockYHei;
483 static const Double_t sOBCPConnHollowZLen;
484 static const Double_t sOBCPConnHollowYHei;
485 static const Double_t sOBCPConnSquareHoleX;
486 static const Double_t sOBCPConnSquareHoleZ;
487 static const Double_t sOBCPConnSqrHoleZPos;
488 static const Double_t sOBCPConnSqrInsertRZ;
489 static const Double_t sOBCPConnRoundHoleD;
490 static const Double_t sOBCPConnRndHoleZPos;
491 static const Double_t sOBCPConnTubesXDist;
492 static const Double_t sOBCPConnTubesYPos;
493 static const Double_t sOBCPConnTubeHole1D;
494 static const Double_t sOBCPConnTubeHole1Z;
495 static const Double_t sOBCPConnTubeHole2D;
496 static const Double_t sOBCPConnFitHoleD;
497 static const Double_t sOBCPConnTubeHole3XP;
498 static const Double_t sOBCPConnTubeHole3ZP;
499 static const Double_t sOBCPConnInstZThick;
500 static const Double_t sOBCPConnInsertYHei;
501 static const Double_t sOBCPConnAFitExtD;
502 static const Double_t sOBCPConnAFitThick;
503 static const Double_t sOBCPConnAFitZLen;
504 static const Double_t sOBCPConnAFitZIn;
505 static const Double_t sOBCPConnPlugInnerD;
506 static const Double_t sOBCPConnPlugTotLen;
507 static const Double_t sOBCPConnPlugThick;
508
509 static const Double_t sOBSpaceFrameZLen[2];
510 static const Int_t sOBSpaceFrameNUnits[2];
511 static const Double_t sOBSpaceFrameUnitLen;
512 static const Double_t sOBSpaceFrameWidth;
513 static const Double_t sOBSpaceFrameHeight;
514 static const Double_t sOBSpaceFrameTopVL;
515 static const Double_t sOBSpaceFrameTopVH;
516 static const Double_t sOBSpaceFrameSideVL;
517 static const Double_t sOBSpaceFrameSideVH;
518 static const Double_t sOBSpaceFrameVAlpha;
519 static const Double_t sOBSpaceFrameVBeta;
520 static const Double_t sOBSFrameBaseRibDiam;
521 static const Double_t sOBSFrameBaseRibPhi;
522 static const Double_t sOBSFrameSideRibDiam;
523 static const Double_t sOBSFrameSideRibPhi;
524 static const Double_t sOBSFrameULegLen;
525 static const Double_t sOBSFrameULegWidth;
526 static const Double_t sOBSFrameULegHeight1;
527 static const Double_t sOBSFrameULegHeight2;
528 static const Double_t sOBSFrameULegThick;
529 static const Double_t sOBSFrameULegXPos;
530 static const Double_t sOBSFrameConnWidth;
531 static const Double_t sOBSFrameConnTotLen;
532 static const Double_t sOBSFrameConnTotHei;
533 static const Double_t sOBSFrameConnTopLen;
534 static const Double_t sOBSFrameConnInsWide;
535 static const Double_t sOBSFrameConnInsBase;
536 static const Double_t sOBSFrameConnInsHei;
537 static const Double_t sOBSFrameConnHoleZPos;
538 static const Double_t sOBSFrameConnHoleZDist;
539 static const Double_t sOBSFrameConnTopHoleD;
540 static const Double_t sOBSFrConnTopHoleXDist;
541 static const Double_t sOBSFrameConnAHoleWid;
542 static const Double_t sOBSFrameConnAHoleLen;
543 static const Double_t sOBSFrConnASideHoleD;
544 static const Double_t sOBSFrConnASideHoleL;
545 static const Double_t sOBSFrConnASideHoleY;
546 static const Double_t sOBSFrameConnCHoleZPos;
547 static const Double_t sOBSFrConnCHoleXDist;
548 static const Double_t sOBSFrConnCTopHoleD;
549 static const Double_t sOBSFrameConnInsHoleD;
550 static const Double_t sOBSFrameConnInsHoleX;
551
552 ClassDefOverride(V3Layer, 0); // ITS v3 geometry
553};
554} // namespace its
555} // namespace o2
556
557#endif
Definition of the V11Geometry class.
std::ostringstream debug
void setStaveModel(Model model)
Definition V3Layer.h:144
Int_t getBuildLevel() const
Definition V3Layer.h:112
Int_t getChipType() const
Definition V3Layer.h:100
void setChipType(Int_t tp)
Definition V3Layer.h:140
Double_t getStaveWidth() const
Definition V3Layer.h:84
Double_t getIBModuleZLength() const
Definition V3Layer.h:96
V3Layer & operator=(const V3Layer &)=default
Assignment operator.
void setStaveWidth(Double_t w)
Definition V3Layer.cxx:3663
void setSensorThick(Double_t t)
Definition V3Layer.h:126
Double_t getNumberOfStaves() const
Definition V3Layer.h:88
Double_t getStaveTilt() const
Definition V3Layer.h:82
void setRadius(Double_t r)
Definition V3Layer.h:136
Double_t getRadius() const
Definition V3Layer.h:92
Int_t getNumberOfChipsPerParent() const
Definition V3Layer.h:110
void setStaveTilt(Double_t t)
Definition V3Layer.cxx:3654
void setPhi0(Double_t phi)
Definition V3Layer.h:138
Double_t getNumberOfChips() const
Definition V3Layer.h:90
Int_t getNumberOfHalfStavesPerParent() const
Definition V3Layer.h:106
Int_t getNumberOfHalfBarrelsPerParent() const
Definition V3Layer.h:102
Double_t getOBModuleZLength() const
Definition V3Layer.h:98
void setChipThick(Double_t t)
Definition V3Layer.h:116
void setNumberOfUnits(Int_t u)
Definition V3Layer.cxx:3644
Model getStaveModel() const
Definition V3Layer.h:114
void setBuildLevel(Int_t buildLevel)
Definition V3Layer.h:142
void setNumberOfStaves(Int_t n)
Definition V3Layer.h:128
Double_t getPhi0() const
Definition V3Layer.h:94
virtual void createLayer(TGeoVolume *motherVolume)
Definition V3Layer.cxx:305
Double_t getSensorThick() const
Definition V3Layer.h:86
Int_t getNumberOfStavesPerParent() const
Definition V3Layer.h:104
~V3Layer() override
Default destructor.
Double_t getChipThick() const
Definition V3Layer.h:80
V3Layer(const V3Layer &)=default
Copy constructor.
Int_t getNumberOfModulesPerParent() const
Definition V3Layer.h:108
Bool_t isTurbo() const
Definition V3Layer.h:78
GLdouble n
Definition glcorearb.h:1982
GLfloat GLfloat GLfloat alpha
Definition glcorearb.h:279
GLint GLenum GLint x
Definition glcorearb.h:403
GLdouble GLdouble GLdouble GLdouble top
Definition glcorearb.h:4077
GLuint const GLchar * name
Definition glcorearb.h:781
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 ...