Project
Loading...
Searching...
No Matches
TRKLayer.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_TRK_LAYER_H
13#define ALICEO2_TRK_LAYER_H
14
15#include <TGeoManager.h>
16#include <Rtypes.h>
17
19#include "TRKBase/Specs.h"
20
21namespace o2
22{
23namespace trk
24{
27 X2X0
28};
29
31{
32 public:
34 TRKCylindricalLayer(int layerNumber, std::string layerName, float rInn, float length, float thickOrX2X0, MatBudgetParamMode mode);
35 virtual ~TRKCylindricalLayer() = default;
36
37 auto getInnerRadius() const { return mInnerRadius; }
38 auto getOuterRadius() const { return mOuterRadius; }
39 auto getZ() const { return mLength; }
40 auto getx2X0() const { return mX2X0; }
41 auto getChipThickness() const { return mChipThickness; }
42 auto getNumber() const { return mLayerNumber; }
43 auto getName() const { return mLayerName; }
44
45 virtual TGeoVolume* createSensor();
46 virtual TGeoVolume* createMetalStack();
47 virtual void createLayer(TGeoVolume* motherVolume);
48
49 protected:
50 // User defined parameters for the layer, to be set in the constructor
52 std::string mLayerName;
55 float mLength;
56 float mX2X0;
58
59 // Fixed parameters for the layer, to be set based on the specifications of the chip and module
61
62 static constexpr float Si_X0 = 9.5f;
63
65};
66
68{
69 public:
70 TRKSegmentedLayer() = default;
71 TRKSegmentedLayer(int layerNumber, std::string layerName, float rInn, int numberOfModules, float thickOrX2X0, MatBudgetParamMode mode);
72 ~TRKSegmentedLayer() override = default;
73
74 TGeoVolume* createSensor() override;
75 TGeoVolume* createDeadzone();
76 TGeoVolume* createMetalStack() override;
77 TGeoVolume* createChip();
78 TGeoVolume* createModule();
79 virtual TGeoVolume* createStave() = 0;
80 void createLayer(TGeoVolume* motherVolume) override = 0;
81
82 protected:
84
85 // Fixed parameters for the layer, to be set based on the specifications of the chip and module
88 static constexpr double sDeadzoneWidth = constants::moduleMLOT::chip::passiveEdgeReadOut;
90 static constexpr double sModuleWidth = constants::moduleMLOT::width;
91 static constexpr int sHalfNumberOfChips = 4;
92
93 // TGeo objects outside logical volumes can cause errors
94 static constexpr float sLogicalVolumeThickness = 1.3;
95
97};
98
100{
101 public:
102 TRKMLLayer() = default;
103 TRKMLLayer(int layerNumber, std::string layerName, float rInn, int numberOfModules, float thickOrX2X0, MatBudgetParamMode mode);
104 ~TRKMLLayer() override = default;
105
106 TGeoVolume* createStave() override;
107 void createLayer(TGeoVolume* motherVolume) override;
108
109 private:
110 static constexpr double sStaveWidth = constants::ML::width;
111
112 ClassDefOverride(TRKMLLayer, 0);
113};
114
116{
117 public:
118 TRKOTLayer() = default;
119 TRKOTLayer(int layerNumber, std::string layerName, float rInn, int numberOfModules, float thickOrX2X0, MatBudgetParamMode mode);
120 ~TRKOTLayer() override = default;
121
122 TGeoVolume* createStave() override;
123 TGeoVolume* createHalfStave();
124 void createLayer(TGeoVolume* motherVolume) override;
125
126 private:
127 static constexpr double sHalfStaveWidth = constants::OT::halfstave::width;
128 static constexpr double sInStaveOverlap = constants::moduleMLOT::gaps::outerEdgeLongSide + constants::moduleMLOT::chip::passiveEdgeReadOut + 0.1; // 1.5mm outer-edge + 1mm deadzone + 1mm (true) overlap
129 static constexpr double sStaveWidth = constants::OT::width - sInStaveOverlap;
130
132};
133
134} // namespace trk
135} // namespace o2
136#endif // ALICEO2_TRK_LAYER_H
specs of the ALICE3 TRK
ClassDef(TRKCylindricalLayer, 0)
static constexpr float Si_X0
Definition TRKLayer.h:62
virtual void createLayer(TGeoVolume *motherVolume)
Definition TRKLayer.cxx:66
auto getChipThickness() const
Definition TRKLayer.h:41
virtual TGeoVolume * createSensor()
Definition TRKLayer.cxx:44
auto getInnerRadius() const
Definition TRKLayer.h:37
virtual ~TRKCylindricalLayer()=default
virtual TGeoVolume * createMetalStack()
Definition TRKLayer.cxx:55
static constexpr double sSensorThickness
Definition TRKLayer.h:60
auto getOuterRadius() const
Definition TRKLayer.h:38
void createLayer(TGeoVolume *motherVolume) override
Definition TRKLayer.cxx:216
TGeoVolume * createStave() override
Definition TRKLayer.cxx:196
~TRKMLLayer() override=default
TGeoVolume * createHalfStave()
Definition TRKLayer.cxx:259
void createLayer(TGeoVolume *motherVolume) override
Definition TRKLayer.cxx:299
TGeoVolume * createStave() override
Definition TRKLayer.cxx:279
~TRKOTLayer() override=default
static constexpr double sChipWidth
Definition TRKLayer.h:86
virtual TGeoVolume * createStave()=0
TGeoVolume * createMetalStack() override
Definition TRKLayer.cxx:114
void createLayer(TGeoVolume *motherVolume) override=0
static constexpr float sLogicalVolumeThickness
Definition TRKLayer.h:94
static constexpr int sHalfNumberOfChips
Definition TRKLayer.h:91
TGeoVolume * createSensor() override
Definition TRKLayer.cxx:92
ClassDefOverride(TRKSegmentedLayer, 0)
TGeoVolume * createModule()
Definition TRKLayer.cxx:157
static constexpr double sChipLength
Definition TRKLayer.h:87
TGeoVolume * createChip()
Definition TRKLayer.cxx:125
static constexpr double sDeadzoneWidth
Definition TRKLayer.h:88
~TRKSegmentedLayer() override=default
static constexpr double sModuleLength
Definition TRKLayer.h:89
static constexpr double sModuleWidth
Definition TRKLayer.h:90
TGeoVolume * createDeadzone()
Definition TRKLayer.cxx:103
GLenum mode
Definition glcorearb.h:266
GLuint GLsizei GLsizei * length
Definition glcorearb.h:790
constexpr double width
Definition Specs.h:103
constexpr double width
Definition Specs.h:120
constexpr double outerEdgeLongSide
Definition Specs.h:92
constexpr double length
Definition Specs.h:96
constexpr double width
Definition Specs.h:95
MatBudgetParamMode
Definition TRKLayer.h:25
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...