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