Project
Loading...
Searching...
No Matches
Geometry.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_MFT_GEOMETRY_H_
18#define ALICEO2_MFT_GEOMETRY_H_
19
20#include "TNamed.h"
21
22class TGeoHMatrix;
23
24namespace o2
25{
26namespace mft
27{
28class GeometryBuilder;
29}
30} // namespace o2
31namespace o2
32{
33namespace mft
34{
35class Segmentation;
36}
37} // namespace o2
38
39namespace o2
40{
41namespace mft
42{
43
44class Geometry : public TNamed
45{
46
47 public:
48 static const Double_t sSensorThickness;
49 static const Double_t sChipThickness;
50
51 static const Double_t sSensorInterspace;
52 static const Double_t sSensorSideOffset;
53 static const Double_t sSensorTopOffset;
54 static const Double_t sLadderOffsetToEnd;
55
56 static const Double_t sFlexHeight;
57 static const Double_t sLineWidth;
58 static const Double_t sVarnishThickness;
59 static const Double_t sAluThickness;
60 static const Double_t sKaptonThickness;
61 static const Double_t sFlexThickness;
62 static const Double_t sClearance;
63 static const Double_t sRadiusHole1;
64 static const Double_t sRadiusHole2;
65 static const Double_t sHoleShift1;
66 static const Double_t sHoleShift2;
67 static const Double_t sConnectorOffset;
68 static const Double_t sCapacitorDz;
69 static const Double_t sCapacitorDy;
70 static const Double_t sCapacitorDx;
71 static const Double_t sConnectorLength;
72 static const Double_t sConnectorWidth;
73 static const Double_t sConnectorHeight;
74 static const Double_t sConnectorThickness;
75 static const Double_t sEpsilon;
76 static const Double_t sGlueThickness;
77 static const Double_t sGlueEdge;
78 static const Double_t sShiftDDGNDline;
79 static const Double_t sShiftline;
80 static const Double_t sGlueRohacellCarbonThickness;
81 static const Double_t sKaptonOnCarbonThickness;
82 static const Double_t sKaptonGlueThickness;
83 static const Int_t sGrooves;
84
85 static TGeoHMatrix sTransMFT2ITS;
86
87 static Geometry* instance();
88
89 ~Geometry() override;
90
91 void build();
92
98
100 Int_t getObjectType(UInt_t uniqueID) const { return ((uniqueID >> 16) & 0x7) - 1; };
101
103 Int_t getHalfID(UInt_t uniqueID) const { return ((uniqueID >> 14) & 0x3) - 1; };
104
106 Int_t getDiskID(UInt_t uniqueID) const { return ((uniqueID >> 11) & 0x7) - 1; };
107
109 Int_t getPlaneID(UInt_t uniqueID) const { return ((uniqueID >> 9) & 0x3) - 1; };
110
112 Int_t getLadderID(UInt_t uniqueID) const { return ((uniqueID >> 3) & 0x3F) - 1; };
113
115 Int_t getSensorID(UInt_t uniqueID) const { return (uniqueID & 0x7) - 1; };
116
117 UInt_t getObjectID(ObjectTypes type, Int_t half = -1, Int_t disk = -1, Int_t plane = -1, Int_t ladder = -1,
118 Int_t chip = -1) const;
119
121 Int_t getSensorVolumeID() const { return mSensorVolumeID; };
122
124 void setSensorVolumeID(Int_t val) { mSensorVolumeID = val; };
125
127 Segmentation* getSegmentation() const { return mSegmentation; };
128
129 Int_t getDiskNSensors(Int_t diskId) const;
130
131 Int_t getDetElemLocalID(Int_t detElem) const;
132
133 private:
134 static Geometry* sInstance;
135 Geometry();
136
137 GeometryBuilder* mBuilder;
138 Segmentation* mSegmentation;
139 Int_t mSensorVolumeID;
140
141 ClassDefOverride(Geometry, 1);
142};
143} // namespace mft
144} // namespace o2
145
146#endif
static const Double_t sChipThickness
CMOS chip thickness.
Definition Geometry.h:49
static const Double_t sCapacitorDy
Definition Geometry.h:69
static const Double_t sHoleShift1
Definition Geometry.h:65
void setSensorVolumeID(Int_t val)
Set the TGeo ID of the volume describing the sensors.
Definition Geometry.h:124
UInt_t getObjectID(ObjectTypes type, Int_t half=-1, Int_t disk=-1, Int_t plane=-1, Int_t ladder=-1, Int_t chip=-1) const
Returns the object Unique ID.
Definition Geometry.cxx:150
static const Double_t sEpsilon
Definition Geometry.h:75
static const Double_t sVarnishThickness
Definition Geometry.h:58
static const Double_t sShiftDDGNDline
Definition Geometry.h:78
static const Double_t sSensorTopOffset
Offset of sensor compare to ladder top edge.
Definition Geometry.h:53
Int_t getDiskNSensors(Int_t diskId) const
Returns the number of sensors on the entire disk (top+bottom)
Definition Geometry.cxx:163
static const Double_t sSensorSideOffset
Offset of sensor compare to ladder edge (close to the beam pipe)
Definition Geometry.h:52
static const Double_t sGlueRohacellCarbonThickness
Definition Geometry.h:80
Int_t getSensorID(UInt_t uniqueID) const
Returns Sensor ID based on Unique ID provided.
Definition Geometry.h:115
Int_t getDetElemLocalID(Int_t detElem) const
Returns the local ID of the sensor on the disk.
Definition Geometry.cxx:180
Int_t getDiskID(UInt_t uniqueID) const
Returns Half-Disk ID based on Unique ID provided.
Definition Geometry.h:106
static const Double_t sFlexThickness
Flex Thickness.
Definition Geometry.h:61
static const Double_t sLineWidth
Definition Geometry.h:57
static const Double_t sConnectorLength
Definition Geometry.h:71
static const Double_t sKaptonGlueThickness
Definition Geometry.h:82
Int_t getLadderID(UInt_t uniqueID) const
Returns Ladder ID based on Unique ID provided.
Definition Geometry.h:112
Int_t getSensorVolumeID() const
Returns TGeo ID of the volume describing the sensors.
Definition Geometry.h:121
static const Double_t sConnectorOffset
Definition Geometry.h:67
Int_t getHalfID(UInt_t uniqueID) const
Returns Half-MFT ID based on Unique ID provided.
Definition Geometry.h:103
static const Double_t sGlueThickness
Definition Geometry.h:76
static const Int_t sGrooves
Definition Geometry.h:83
static const Double_t sKaptonThickness
Definition Geometry.h:60
~Geometry() override
Definition Geometry.cxx:117
static Geometry * instance()
Singleton access.
Definition Geometry.cxx:98
static const Double_t sCapacitorDz
Definition Geometry.h:68
static const Double_t sConnectorWidth
Definition Geometry.h:72
Segmentation * getSegmentation() const
Returns pointer to the segmentation.
Definition Geometry.h:127
static const Double_t sClearance
Definition Geometry.h:62
static const Double_t sSensorInterspace
Interspace between 2 sensors on a ladder.
Definition Geometry.h:51
static const Double_t sConnectorHeight
Definition Geometry.h:73
static const Double_t sGlueEdge
Definition Geometry.h:77
Int_t getObjectType(UInt_t uniqueID) const
Returns Object type based on Unique ID provided.
Definition Geometry.h:100
static TGeoHMatrix sTransMFT2ITS
transformation due to the different conventions
Definition Geometry.h:85
static const Double_t sSensorThickness
CMOS sensor part thickness.
Definition Geometry.h:48
static const Double_t sFlexHeight
Flex Height.
Definition Geometry.h:56
static const Double_t sConnectorThickness
Definition Geometry.h:74
static const Double_t sRadiusHole1
Definition Geometry.h:63
static const Double_t sKaptonOnCarbonThickness
Definition Geometry.h:81
static const Double_t sShiftline
Definition Geometry.h:79
static const Double_t sLadderOffsetToEnd
Offset of sensor compare to ladder connector edge.
Definition Geometry.h:54
static const Double_t sRadiusHole2
Definition Geometry.h:64
static const Double_t sHoleShift2
Definition Geometry.h:66
Int_t getPlaneID(UInt_t uniqueID) const
Returns Half-Disk plane (side) ID based on Unique ID provided.
Definition Geometry.h:109
static const Double_t sCapacitorDx
Definition Geometry.h:70
static const Double_t sAluThickness
Definition Geometry.h:59
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
GLuint GLfloat * val
Definition glcorearb.h:1582
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...