2121
2222#include < array>
2323
24+ // This files defines the design specifications of the chip.
25+ // Each TGeoShape has the following properties
26+ // length: dimension in z-axis
27+ // width: dimension in xy-axes
28+ // color: for visulisation
2429namespace o2 ::its3::constants
2530{
2631constexpr double cm{1e+2 }; // This is the default unit of TGeo so we use this as scale
@@ -35,27 +40,6 @@ constexpr int nRows{442};
3540constexpr int nPixels{nRows * nCols};
3641constexpr EColor color{kGreen };
3742constexpr double area{width * length};
38- namespace pixels
39- {
40- namespace apts
41- {
42- constexpr double pitchX{15.0 * mu};
43- constexpr double pitchZ{15.0 * mu};
44- } // namespace apts
45- namespace moss
46- {
47- namespace top
48- {
49- constexpr double pitchX{22.5 * mu};
50- constexpr double pitchZ{22.5 * mu};
51- } // namespace top
52- namespace bot
53- {
54- constexpr double pitchX{18.0 * mu};
55- constexpr double pitchZ{18.0 * mu};
56- } // namespace bot
57- } // namespace moss
58- } // namespace pixels
5943} // namespace pixelarray
6044namespace tile
6145{
@@ -112,7 +96,7 @@ constexpr EColor color{kCyan};
11296} // namespace rec
11397constexpr unsigned int nRSUs{12 };
11498constexpr unsigned int nTilesPerSegment{nRSUs * rsu::nTiles};
115- constexpr double length{nRSUs * rsu::length + lec::length + rec::length};
99+ constexpr double length{( nRSUs * rsu::length) + lec::length + rec::length};
116100constexpr double lengthSensitive{nRSUs * rsu::length};
117101} // namespace segment
118102namespace carbonfoam
@@ -136,9 +120,9 @@ constexpr EColor color{kBlack};
136120} // namespace metalstack
137121namespace silicon
138122{
139- constexpr double thickness{45 * mu}; // thickness of silicion
140- constexpr double radiusInner {(thickness + metalstack::thickness) / 2 .}; // inner silicion radius correction
141- constexpr double radiusOuter {(thickness - metalstack::thickness) / 2 .}; // outer silicion radius correction
123+ constexpr double thickness{45 * mu}; // thickness of silicon
124+ constexpr double thicknessIn {(thickness + metalstack::thickness) / 2 .}; // inner silicon thickness
125+ constexpr double thicknessOut {(thickness - metalstack::thickness) / 2 .}; // outer silicon thickness
142126} // namespace silicon
143127constexpr unsigned int nLayers{3 };
144128constexpr unsigned int nTotLayers{7 };
@@ -147,10 +131,42 @@ constexpr double equatorialGap{1 * mm};
147131constexpr std::array<unsigned int , nLayers> nSegments{3 , 4 , 5 };
148132constexpr double totalThickness{silicon::thickness + metalstack::thickness}; // total chip thickness
149133constexpr std::array<double , nLayers> radii{19.0006 * mm, 25.228 * mm, 31.4554 * mm}; // nominal radius
150- constexpr std::array<double , nLayers> radiiInner{radii[0 ] - silicon::radiusInner , radii[1 ] - silicon::radiusInner , radii[2 ] - silicon::radiusInner }; // inner silicon radius
151- constexpr std::array<double , nLayers> radiiOuter{radii[0 ] + silicon::radiusOuter , radii[1 ] + silicon::radiusOuter , radii[2 ] + silicon::radiusOuter}; // outer silicon radius
134+ constexpr std::array<double , nLayers> radiiInner{radii[0 ] - silicon::thicknessIn , radii[1 ] - silicon::thicknessIn , radii[2 ] - silicon::thicknessIn }; // inner silicon radius
135+ constexpr std::array<double , nLayers> radiiOuter{radii[0 ] + silicon::thicknessOut , radii[1 ] + silicon::thicknessOut , radii[2 ] + silicon::thicknessOut}; // outer silicon radius
152136constexpr std::array<double , nLayers> radiiMiddle{(radiiInner[0 ] + radiiOuter[0 ]) / 2 ., (radiiInner[1 ] + radiiOuter[1 ]) / 2 ., (radiiInner[2 ] + radiiOuter[2 ]) / 2 .}; // middle silicon radius
153- constexpr double nominalYShift{-metalstack::thickness / 2 .}; // shift to position in silicion volume to the chip volume (silicon+metalstack)
137+ /* constexpr double nominalYShift{-metalstack::thickness / 2.}; // shift to position in silicion volume to the chip volume (silicon+metalstack)*/
138+ constexpr double nominalYShift{0 }; // shift to position in silicion volume to the chip volume (silicon+metalstack)
139+
140+ // extra information of pixels and their response functions
141+ namespace pixelarray ::pixels
142+ {
143+ namespace mosaix
144+ {
145+ constexpr double pitchX{width / static_cast <double >(nRows)};
146+ constexpr double pitchZ{length / static_cast <double >(nCols)};
147+ } // namespace mosaix
148+ namespace apts
149+ {
150+ constexpr double pitchX{15.0 * mu};
151+ constexpr double pitchZ{15.0 * mu};
152+ constexpr double responseUpperLimit{10 * mu};
153+ constexpr double responseYShift{responseUpperLimit - silicon::thicknessOut};
154+ } // namespace apts
155+ namespace moss
156+ {
157+ namespace top
158+ {
159+ constexpr double pitchX{22.5 * mu};
160+ constexpr double pitchZ{22.5 * mu};
161+ } // namespace top
162+ namespace bot
163+ {
164+ constexpr double pitchX{18.0 * mu};
165+ constexpr double pitchZ{18.0 * mu};
166+ } // namespace bot
167+ } // namespace moss
168+ } // namespace pixelarray::pixels
169+
154170namespace detID
155171{
156172constexpr unsigned int mDetIDs {2 * 12 * 12 * 12 }; // < 2 Hemispheres * (3,4,5=12 segments in a layer) * 12 RSUs in a segment * 12 Tiles in a RSU
0 commit comments