Project
Loading...
Searching...
No Matches
Specs.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
14
15#ifndef O2_ALICE_TRK_SPECS
16#define O2_ALICE_TRK_SPECS
17
18#include <array>
19
20#include <math.h>
21
22// This is a temporary version with the specs for the ALICE3 TRK
23// This files defines the design specifications of the chips for VD, ML, OT.
24// Each TGeoShape has the following properties
25// length: dimension in z-axis
26// width: dimension in xy-axes
27// color: for visualisation
29{
30// Default unit of TGeo = cm
31constexpr double cm{1};
32constexpr double mu{1e-4};
33constexpr double mm{1e-1};
34
35namespace VD // TODO: add a primitive segmentation with more granularity wrt 1/4 layer = 1 chip
36{
37namespace silicon
38{
39constexpr double thickness{20 * mu}; // thickness of the silicon (should be 10 um epitaxial layer + 20 um substrate)?
40} // namespace silicon
41namespace metalstack
42{
43constexpr double thickness{80 * mu}; // thickness of the copper metal stack - for the moment it is not implemented. PL: set to 80 um considering silicon as material
44} // namespace metalstack
45namespace petal
46{
47constexpr int nLayers{3}; // number of layers in each VD petal
48constexpr int nDisks{6}; // number of disks in each VD petal
49namespace layer
50{
51constexpr double pitchX{10 * mu}; // pitch of the row
52constexpr double pitchZ{10 * mu}; // pitch of the column
53constexpr double totalThickness{silicon::thickness + metalstack::thickness}; // total thickness of the chip
54constexpr std::array<double, nLayers> gaps{1.63 * mm, 1.2 * mm, 1.2 * mm}; // gaps between two consecutive petals
55constexpr std::array<double, nLayers> radii{0.5 * cm, 1.2 * cm, 2.5 * cm}; // radius of layer in cm
56constexpr std::array<double, nLayers> width{radii[0] * 2 * M_PI / 4 - gaps[0], radii[1] * 2 * M_PI / 4 - gaps[1], radii[2] * 2 * M_PI / 4 - gaps[2]}; // width of the quarter of layer in cm
57constexpr double length{50 * cm}; // length of the layer
58constexpr int nCols{static_cast<int>(length / pitchZ)}; // number of columns in the chip
59constexpr std::array<int, nLayers> nRows{static_cast<int>(width[0] / pitchX), static_cast<int>(width[1] / pitchX), static_cast<int>(width[2] / pitchX)}; // number of rows in the chip. For the moment is different for each layer since a siner segmentation in repetitive units is stil to be implemented
60
61} // namespace layer
62namespace disk
63{
64constexpr double radiusIn{0.5 * cm};
65constexpr double radiusOut{2.5 * cm};
66} // namespace disk
67} // namespace petal
68} // namespace VD
69
70namespace moduleMLOT
71{
72namespace silicon
73{
74constexpr double thickness{100 * mu}; // thickness of the silicon (should be 10 um epitaxial layer + 90 um substrate)?
75} // namespace silicon
76namespace metalstack
77{
78constexpr double thickness{0 * mu}; // thickness of the copper metal stack - for the moment it is not implemented
79} // namespace metalstack
80namespace chip
81{
82constexpr double width{25 * mm}; // width of the chip
83constexpr double length{29 * mm}; // length of the chip
84constexpr double pitchX{20 * mu}; // pitch of the row
85constexpr double pitchZ{20 * mu}; // pitch of the column
86constexpr double totalThickness{silicon::thickness + metalstack::thickness}; // total thickness of the chip
87static constexpr double passiveEdgeReadOut{1.5 * mm}; // width of the readout edge -> dead zone
88constexpr int nRows{static_cast<int>((width - passiveEdgeReadOut) / pitchX)}; // number of rows in the chip
89constexpr int nCols{static_cast<int>(length / pitchZ)}; // number of columns in the chip
90} // namespace chip
91namespace gaps
92{
93constexpr double interChips{50 * mu}; // gap between the chips
94constexpr double outerEdgeLongSide{1 * mm}; // gap between the chips and the outer edges (long side)
95constexpr double outerEdgeShortSide{0.1 * mm}; // gap between the chips and the outer edges (short side)
96} // namespace gaps
97constexpr double width{chip::width * 2 + gaps::interChips + 2 * gaps::outerEdgeLongSide}; // width of the module
98constexpr double length{chip::length * 4 + 3 * gaps::interChips + 2 * gaps::outerEdgeShortSide}; // length of the module
99constexpr int nRows{static_cast<int>(width / chip::pitchX)}; // number of columns in the module
100constexpr int nCols{static_cast<int>(length / chip::pitchZ)}; // number of rows in the module
101} // namespace moduleMLOT
102
103namespace ML
104{
105constexpr int nLayers{5}; // number of layers in the ML
106constexpr double width{constants::moduleMLOT::width * 1}; // width of the stave
107// constexpr double length{constants::moduleMLOT::length * 10}; // length of the stave
108constexpr double length{124 * cm}; // length of the stave, hardcoded to fit the implemented geometry
109constexpr int nRows{static_cast<int>(width / constants::moduleMLOT::chip::pitchX)}; // number of rows in the stave
110constexpr int nCols{static_cast<int>(length / constants::moduleMLOT::chip::pitchZ)}; // number of columns in the stave
111} // namespace ML
112
113namespace OT
114{
115namespace halfstave
116{
117constexpr double width{moduleMLOT::width * 1}; // width of the half stave
118// constexpr double length{moduleMLOT::length * 20}; // length of the halfstave
119constexpr double length{258 * cm}; // length of the halfstave, hardcoded to fit the implemented geometry
120constexpr int nRows{static_cast<int>(width / moduleMLOT::chip::pitchX)}; // number of rows in the halfstave
121constexpr int nCols{static_cast<int>(length / moduleMLOT::chip::pitchZ)}; // number of columns in the halfstave
122} // namespace halfstave
123constexpr int nLayers{3}; // number of layers in the OT
124constexpr double width{halfstave::width * 2}; // width of the stave
125constexpr double length{halfstave::length}; // length of the stave
126constexpr int nRows{static_cast<int>(width / moduleMLOT::chip::pitchX)}; // number of rows in the stave
127constexpr int nCols{static_cast<int>(length / moduleMLOT::chip::pitchZ)}; // number of columns in the stave
128} // namespace OT
129
130namespace apts
131{
132constexpr double pitchX{15.0 * mu};
133constexpr double pitchZ{15.0 * mu};
134constexpr double responseYShift{15.5 * mu};
135constexpr double thickness{45 * mu};
136} // namespace apts
137
138namespace alice3resp
139{
140constexpr double pitchX{10.0 * mu};
141constexpr double pitchZ{10.0 * mu};
142constexpr double responseYShift{5 * mu};
143constexpr double thickness{20 * mu};
144} // namespace alice3resp
145} // namespace o2::trk::constants
146
147#endif
GLint GLsizei width
Definition glcorearb.h:270
GLuint GLsizei GLsizei * length
Definition glcorearb.h:790
GLenum GLuint GLint GLint layer
Definition glcorearb.h:1310
constexpr int nRows
Definition Specs.h:109
constexpr int nLayers
Definition Specs.h:105
constexpr int nCols
Definition Specs.h:110
constexpr int nRows
Definition Specs.h:126
constexpr int nLayers
Definition Specs.h:123
constexpr int nCols
Definition Specs.h:127
constexpr double thickness
Definition Specs.h:43
constexpr std::array< double, nLayers > gaps
Definition Specs.h:54
constexpr std::array< double, nLayers > radii
Definition Specs.h:55
constexpr double totalThickness
Definition Specs.h:53
constexpr std::array< int, nLayers > nRows
Definition Specs.h:59
constexpr int nLayers
Definition Specs.h:47
constexpr double thickness
Definition Specs.h:39
constexpr double pitchZ
Definition Specs.h:141
constexpr double thickness
center of the epitaxial layer
Definition Specs.h:143
constexpr double responseYShift
Definition Specs.h:142
constexpr double pitchX
Definition Specs.h:140
constexpr double pitchZ
Definition Specs.h:133
constexpr double pitchX
Definition Specs.h:132
constexpr double thickness
Definition Specs.h:135
constexpr double responseYShift
Definition Specs.h:134
constexpr double totalThickness
Definition Specs.h:86
constexpr double outerEdgeLongSide
Definition Specs.h:94
constexpr double outerEdgeShortSide
Definition Specs.h:95
constexpr double width
Definition Specs.h:97
constexpr double mm
Definition Specs.h:33
constexpr double mu
Definition Specs.h:32
constexpr double cm
Definition Specs.h:31