1818#include < vector>
1919#include < map>
2020#include < TColor.h>
21+ #include < TMath.h>
2122
2223namespace o2 ::ft3::ModuleConstants
2324{
@@ -56,6 +57,7 @@ namespace o2::ft3::ModuleConstants
5657 const double sensor_stack_height = kSensorsPerStack * sensor2x1_height +
5758 (kSensorsPerStack - 1 ) * sensor2x1_gap;
5859
60+ // OLD VERSION: RECTANGULAR STAVES
5961 const double carbonFiberThickness = 0.01 ;
6062 const double foamSpacingThickness = 1.0 ;
6163
@@ -89,7 +91,10 @@ namespace o2::ft3::ModuleConstants
8991 2.25 , 6.75 , 11.25 , 15.75 , 20.25 , 24.75 , 29.25 , 33.75 , // R
9092 38.25 , 42.75 , 47.25 , 51.75 , 56.25 , 60.75 , 65.25 // R
9193 };
94+ const double x_midpoint_spacing = 4.5 ; // assume constant for now
9295 // which side of the disc do we place the stave?
96+ // used for kSegmentedMarch26 for front/back face, and for
97+ // kSegmentedStave for staggering staves in z (see z_offsetStave)
9398 // accessed via stave index, NOT stave ID
9499 const std::vector<bool > staveOnFront =
95100 {
@@ -100,7 +105,7 @@ namespace o2::ft3::ModuleConstants
100105 // small helper function to get 1-indexed stave ID, counting from the middle outwards,
101106 // with negative IDs on the left and positive IDs on the right
102107 inline const int staveIdxToID (int staveIdx) {
103- unsigned nStavesOneSide = staveOnFront .size () / 2 ;
108+ unsigned nStavesOneSide = y_lengths .size () / 2 ;
104109 bool isRight = staveIdx >= nStavesOneSide;
105110 return staveIdx - nStavesOneSide + isRight;
106111 }
@@ -111,11 +116,32 @@ namespace o2::ft3::ModuleConstants
111116 const double kaptonThickness = 0.03 ;
112117 const double epoxyThickness = 0.0012 ;
113118
119+ const double effectiveCarbonThickness_Stave = 0.02 ; // foam + shell
120+ const double staveOpeningAngle = 60 * TMath::DegToRad ();
121+ const double sinTheta = TMath::Sin(staveOpeningAngle / 2 );
122+ const double alpha = TMath::Pi() / 2 - staveOpeningAngle / 2 ; // bottom angles
123+ const double staveSensorGap = 0.1 ; // 2mm padding on each side when sensor is glued
124+ const double staveTriangleHeight = (sensor2x1_width + 2 * staveSensorGap) / 2.0
125+ / tan(staveOpeningAngle / 2.0 );
126+ /*
127+ * Now describe the offset of every other stave in z to avoid overlaps
128+ * ______ ______
129+ * \ /______\ / | <-- z_offsetStave
130+ * \ / \ / \ /
131+ * \/ \ / \/
132+ * \/
133+ */
134+ // If midpoint spacing becomes non constant, this becomes a function
135+ // TODO: add some tolerance to avoid overlaps?
136+ const double z_offsetStave =
137+ staveTriangleHeight * (2 - x_midpoint_spacing / ( sensor2x1_width / 2 + staveSensorGap ) );
138+
114139 const int SiColor = kGreen ;
115140 const int SiInactiveColor = kRed ;
116141 const int glueColor = kBlue ;
117- const int CuColor = kBlack ;
142+ const int CuColor = kOrange ;
118143 const int kaptonColor = kYellow ;
144+ const int carbonColor = kBlack ;
119145}
120146
121147#endif // FT3MODULECONSTANTS_H
0 commit comments