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
112namespace eosCard // end-of-stave readout card, one per ML stave, A-side (+z) only,
113{ // placed in front of the TRK_MIDBARCONN_DISK (fibre, power, ...)
114constexpr double length{90 * mm}; // z-extent (fits the gap to the conn disk)
115constexpr double width{50 * mm}; // phi-extent
116constexpr double thickness{1.5 * mm}; // r-extent, FR4 + copper planes
117constexpr int nCopperLayers{4}; // copper planes, spread over the thickness
118constexpr double copperThickness{122 * mu}; // per copper plane; default of TRKBase.mlEosCardCuThickness
119constexpr double zGap{0.1 * mm}; // z-clearance from the last module / stave end
120} // namespace eosCard
121} // namespace ML
122
123namespace OT
124{
125namespace halfstave
126{
127constexpr double width{moduleMLOT::width * 1}; // width of the half stave
128// constexpr double length{moduleMLOT::length * 20}; // length of the halfstave
129constexpr double length{258 * cm}; // length of the halfstave, hardcoded to fit the implemented geometry
130constexpr int nRows{static_cast<int>(width / moduleMLOT::chip::pitchX)}; // number of rows in the halfstave
131constexpr int nCols{static_cast<int>(length / moduleMLOT::chip::pitchZ)}; // number of columns in the halfstave
132} // namespace halfstave
133constexpr int nLayers{3}; // number of layers in the OT
134constexpr double width{halfstave::width * 2}; // width of the stave
135constexpr double length{halfstave::length}; // length of the stave
136constexpr int nRows{static_cast<int>(width / moduleMLOT::chip::pitchX)}; // number of rows in the stave
137constexpr int nCols{static_cast<int>(length / moduleMLOT::chip::pitchZ)}; // number of columns in the stave
138constexpr int nModulesPerRow{11}; // modules along z per row
139constexpr double interModuleGap{0.2 * mm}; // z-gap between module FPCs
140
141// Component dimensions of the simplified-realistic OT stave
142constexpr double interChipGap{0.2 * mm}; // gap between chips within a module
143namespace fpc
144{
145constexpr double wireBondMargin{2.1 * mm}; // FPC beyond the chips on each long side, for wire bonding
146constexpr double length{116.8 * mm}; // z-extent
147constexpr double width{2 * moduleMLOT::chip::width + interChipGap + 2 * wireBondMargin}; // phi-extent
148constexpr double thickness{0.200 * mm}; // r-extent, Kapton+Cu stack
149} // namespace fpc
150namespace coldPlate
151{
152constexpr double length{116.8 * mm}; // z-extent
153constexpr double width{47.2 * mm}; // phi-extent
154constexpr double thickness{0.4 * mm}; // r-extent
155} // namespace coldPlate
156namespace connector
157{
158constexpr double width{25.0 * mm}; // phi-extent
159constexpr double length{10.0 * mm}; // z-extent
160constexpr double thickness{2.0 * mm}; // r-extent
161} // namespace connector
162namespace capacitor
163{
164constexpr double width{1.0 * mm}; // phi-extent
165constexpr double length{0.5 * mm}; // z-extent
166constexpr double thickness{0.3 * mm}; // r-extent
167constexpr int perChip{5};
168} // namespace capacitor
169namespace bracket
170{
171constexpr double length{10.0 * mm}; // z-extent
172constexpr double width{5.0 * mm}; // phi-extent
173constexpr double thickness{8.0 * mm}; // r-extent
174} // namespace bracket
175namespace coolingPipe
176{
177constexpr double rInner{0.4 * cm};
178constexpr double rOuter{0.5 * cm};
179constexpr double rLocalOffset{3.5 * cm}; // chip mid-plane to pipe axis, local r
180} // namespace coolingPipe
181namespace eosCard // end-of-stave readout card, one per stave
182{
183constexpr double length{120 * mm}; // z-extent
184constexpr double width{80 * mm}; // phi-extent
185constexpr double thickness{1.5 * mm}; // r-extent, FR4 + copper planes
186constexpr int nCopperLayers{4}; // copper planes, spread over the thickness
187constexpr double copperThickness{122 * mu}; // per copper plane; sets the card to 4.0 % x/X0, default of TRKBase.otEosCardCuThickness
188constexpr double zGap{2.0 * mm}; // z-clearance from the last module
189} // namespace eosCard
190
191namespace supportRing // carbon fibre half-rings the stave space frames mount on
192{
193constexpr double radialHeight{30 * mm}; // r-extent of the ring cross-section
194constexpr double zWidth{12 * mm}; // z-extent of the ring cross-section
195constexpr double wallThickness{2 * mm}; // the ring is hollow
196constexpr double zClearance{1.0 * mm}; // z-clearance to the nearest wall and to the cooling pipe
197} // namespace supportRing
198
199constexpr double sensorThickness{moduleMLOT::silicon::thickness}; // pure-silicon chip (no metal stack)
200constexpr double rowActiveOverlap{1.0 * mm}; // active overlap between the two rows of a stave
201constexpr double rowRadialStagger{2.0 * mm}; // radial step between any two overlapping rows
202constexpr double halfBarrelChipGap{1.0 * mm}; // gap between the two azimuthal half-barrels
203constexpr double barrelWallClearance{1.0 * mm}; // clearance between a separation wall and the nearest stave
204constexpr double barrelWallSlotMargin{0.1 * mm}; // clearance between a separation wall and its envelope slot
205constexpr double connectorZDepth{3.0 * cm}; // connector inset from module short edge in z
206constexpr double bracketZDepth{3.0 * cm}; // bracket inset from cold-plate short edge in z
207constexpr double barrelHalvesZGap{0.8 * cm}; // z-gap between the two eta half-barrels
208} // namespace OT
209
210namespace apts
211{
212constexpr double pitchX{15.0 * mu};
213constexpr double pitchZ{15.0 * mu};
214constexpr double responseYShift{15.5 * mu};
215constexpr double thickness{45 * mu};
216} // namespace apts
217
218namespace alice3resp
219{
220constexpr double pitchX{10.0 * mu};
221constexpr double pitchZ{10.0 * mu};
222constexpr double responseYShift{5 * mu};
223constexpr double thickness{20 * mu};
224} // namespace alice3resp
225
226namespace MLOTDisks
227{
228constexpr int nLayers{12}; // number of disks in the ML and OT
229}
230
231} // namespace o2::trk::constants
232
233#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 double zGap
Definition Specs.h:119
constexpr int nCopperLayers
Definition Specs.h:117
constexpr double thickness
Definition Specs.h:116
constexpr double copperThickness
Definition Specs.h:118
constexpr int nRows
Definition Specs.h:109
constexpr int nLayers
Definition Specs.h:105
constexpr int nCols
Definition Specs.h:110
constexpr double thickness
Definition Specs.h:173
constexpr double thickness
Definition Specs.h:166
constexpr double thickness
Definition Specs.h:154
constexpr double thickness
Definition Specs.h:160
constexpr double rLocalOffset
Definition Specs.h:179
constexpr double copperThickness
Definition Specs.h:187
constexpr double zGap
Definition Specs.h:188
constexpr int nCopperLayers
Definition Specs.h:186
constexpr double thickness
Definition Specs.h:185
constexpr double wireBondMargin
Definition Specs.h:145
constexpr double thickness
Definition Specs.h:148
constexpr double radialHeight
Definition Specs.h:193
constexpr double wallThickness
Definition Specs.h:195
constexpr double sensorThickness
Definition Specs.h:199
constexpr double halfBarrelChipGap
Definition Specs.h:202
constexpr double bracketZDepth
Definition Specs.h:206
constexpr double interModuleGap
Definition Specs.h:139
constexpr int nRows
Definition Specs.h:136
constexpr int nLayers
Definition Specs.h:133
constexpr double rowActiveOverlap
Definition Specs.h:200
constexpr int nModulesPerRow
Definition Specs.h:138
constexpr double connectorZDepth
Definition Specs.h:205
constexpr double interChipGap
Definition Specs.h:142
constexpr int nCols
Definition Specs.h:137
constexpr double rowRadialStagger
Definition Specs.h:201
constexpr double barrelWallClearance
Definition Specs.h:203
constexpr double barrelWallSlotMargin
Definition Specs.h:204
constexpr double barrelHalvesZGap
Definition Specs.h:207
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:221
constexpr double thickness
center of the epitaxial layer
Definition Specs.h:223
constexpr double responseYShift
Definition Specs.h:222
constexpr double pitchX
Definition Specs.h:220
constexpr double pitchZ
Definition Specs.h:213
constexpr double pitchX
Definition Specs.h:212
constexpr double thickness
Definition Specs.h:215
constexpr double responseYShift
Definition Specs.h:214
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