Project
Loading...
Searching...
No Matches
VDLayer.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_VD_LAYER_H
13#define ALICEO2_VD_LAYER_H
14
15#include <string>
16#include <Rtypes.h>
17
18class TGeoVolume;
19class TGeoMatrix;
20
21namespace o2
22{
23namespace trk
24{
25
26// Base class for a VD layer
28{
29 public:
30 VDLayer() = default;
31 VDLayer(int layerNumber, const std::string& layerName, double layerX2X0);
32 virtual ~VDLayer() = default;
33
34 // Create the layer (AIR container + sensors) and insert it into mother
35 virtual void createLayer(TGeoVolume* motherVolume, TGeoMatrix* combiTrans = nullptr) const = 0;
36
37 double getChipThickness() const { return mChipThickness; }
38
39 protected:
41 std::string mLayerName;
42 double mX2X0{0.f}; // Radiation length in units of X0
43 double mChipThickness{0.f}; // thickness derived from X/X0
44 double mModuleWidth{4.54f}; // cm
45
46 // ClassDef(VDLayer, 1)
47};
48
49// Cylindrical segment layer
51{
52 public:
53 VDCylindricalLayer(int layerNumber, const std::string& layerName, double layerX2X0,
54 double radius, double phiSpanDeg, double lengthZ, double lengthSensZ);
55
56 TGeoVolume* createSensor() const; // builds the sensor volume
57 void createLayer(TGeoVolume* motherVolume, TGeoMatrix* combiTrans = nullptr) const override;
58
59 private:
60 double mRadius{0.f};
61 double mPhiSpanDeg{0.f}; // degrees
62 double mLengthZ{0.f}; // layer container length in Z
63 double mLengthSensZ{0.f}; // sensor length in Z
64
65 // ClassDef(VDCylindricalLayer, 1)
66};
67
68// Rectangular segment layer
70{
71 public:
72 VDRectangularLayer(int layerNumber, const std::string& layerName, double layerX2X0,
73 double width, double lengthZ, double lengthSensZ);
74
75 TGeoVolume* createSensor() const;
76 void createLayer(TGeoVolume* motherVolume, TGeoMatrix* combiTrans = nullptr) const override;
77
78 private:
79 double mWidth{0.f};
80 double mLengthZ{0.f};
81 double mLengthSensZ{0.f};
82
83 // ClassDef(VDRectangularLayer, 1)
84};
85
86// Disk segment layer
87class VDDiskLayer : public VDLayer
88{
89 public:
90 VDDiskLayer(int layerNumber, const std::string& layerName, double layerX2X0,
91 double rMin, double rMax, double phiSpanDeg, double zPos);
92
93 TGeoVolume* createSensor() const;
94 void createLayer(TGeoVolume* motherVolume, TGeoMatrix* combiTrans = nullptr) const override;
95
96 double getZPosition() const { return mZPos; }
97
98 private:
99 double mRMin{0.f};
100 double mRMax{0.f};
101 double mPhiSpanDeg{0.f}; // degrees
102 double mZPos{0.f}; // placement along Z
103
104 // ClassDef(VDDiskLayer, 1)
105};
106
107} // namespace trk
108} // namespace o2
109
110#endif // ALICEO2_VD_LAYER_H
void createLayer(TGeoVolume *motherVolume, TGeoMatrix *combiTrans=nullptr) const override
Definition VDLayer.cxx:155
TGeoVolume * createSensor() const
Definition VDLayer.cxx:73
double getZPosition() const
Definition VDLayer.h:96
void createLayer(TGeoVolume *motherVolume, TGeoMatrix *combiTrans=nullptr) const override
Definition VDLayer.cxx:265
TGeoVolume * createSensor() const
Definition VDLayer.cxx:120
double mModuleWidth
Definition VDLayer.h:44
std::string mLayerName
Definition VDLayer.h:41
VDLayer()=default
virtual void createLayer(TGeoVolume *motherVolume, TGeoMatrix *combiTrans=nullptr) const =0
double getChipThickness() const
Definition VDLayer.h:37
double mChipThickness
Definition VDLayer.h:43
virtual ~VDLayer()=default
TGeoVolume * createSensor() const
Definition VDLayer.cxx:96
void createLayer(TGeoVolume *motherVolume, TGeoMatrix *combiTrans=nullptr) const override
Definition VDLayer.cxx:211
GLint GLsizei width
Definition glcorearb.h:270
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...