1818#include < Rtypes.h>
1919#include " MathUtils/Cartesian.h"
2020#include " CommonConstants/MathConstants.h"
21+ #include " ITS3Base/SuperAlpideParams.h"
2122#include < Framework/Logger.h>
2223
2324namespace o2
@@ -30,33 +31,40 @@ class SegmentationSuperAlpide
3031{
3132 public:
3233 SegmentationSuperAlpide (int layer = 0 ) : mLayer {layer},
33- mNPixels {mNRows * mNCols },
34+ mPitchCol {SuperAlpideParams::Instance ().pitchCol },
35+ mPitchRow {SuperAlpideParams::Instance ().pitchRow },
36+ mNCols {static_cast <int >(mLength / mPitchCol )},
3437 mNRows {static_cast <int >(double (mRadii [layer] + mSensorLayerThickness / 2 ) * double (constants::math::PI) / double (mPitchRow ) + 1 )},
38+ mNPixels {mNRows * mNCols },
39+ mActiveMatrixSizeCols {mPitchCol * mNCols },
3540 mActiveMatrixSizeRows {mPitchRow * mNRows },
41+ mSensorSizeCols {mActiveMatrixSizeCols + mPassiveEdgeSide + mPassiveEdgeSide },
3642 mSensorSizeRows {mActiveMatrixSizeRows + mPassiveEdgeTop + mPassiveEdgeReadOut }
3743 {
38- LOGP (info, " rows: {} cols: {} npixels: {}" , mNRows , mNCols , mNPixels );
39- LOGP (info, " SegmentationSuperAlpide: layer {} ActiveMatrixSizeRows: {} ActiveMatrixSizeCols: {}" , mLayer , mActiveMatrixSizeCols , mActiveMatrixSizeRows );
44+ LOGP (info, " SegmentationSuperAlpide:" );
45+ LOGP (info, " PitchCol={} PitchRow={}" , mPitchCol , mPitchRow );
46+ LOGP (info, " Layer {}: ActiveMatrixSizeRows={} ActiveMatrixSizeCols={}" , mLayer , mActiveMatrixSizeCols , mActiveMatrixSizeRows );
47+ LOGP (info, " Rows={} Cols={} NPixels={}" , mNRows , mNCols , mNPixels );
4048 }
41- static constexpr std::array<float , 10 > mRadii = {1 .8f , 2 .4f , 3 .0f , 7 .0f , 10 .f };
42- static constexpr float mLength = 27 .15f ;
43- static constexpr float mPitchCol = 20 . e-4 ;
44- static constexpr float mPitchRow = 20 . e-4 ;
45- static constexpr int mNCols = mLength / mPitchCol ;
46- int mNRows ;
47- int mNPixels ;
48- int mLayer ;
49- static constexpr float mPassiveEdgeReadOut = 0 .; // width of the readout edge (Passive bottom)
50- static constexpr float mPassiveEdgeTop = 0 .; // Passive area on top
51- static constexpr float mPassiveEdgeSide = 0 .; // width of Passive area on left/right of the sensor
52- static constexpr float mActiveMatrixSizeCols = mPitchCol * mNCols ; // Active size along columns
53- float mActiveMatrixSizeRows ; // Active size along rows
54-
55- // effective thickness of sensitive layer, accounting for charge collection non-unifoemity , https://alice.its.cern.ch/jira/browse/AOC-46
56- static constexpr float mSensorLayerThicknessEff = 28 .e-4 ;
57- static constexpr float mSensorLayerThickness = 30 .e-4 ; // physical thickness of sensitive part
58- static constexpr float mSensorSizeCols = mActiveMatrixSizeCols + mPassiveEdgeSide + mPassiveEdgeSide ; // SensorSize along columns
59- float mSensorSizeRows ; // SensorSize along rows
49+ static constexpr std::array<float , 10 > mRadii = {1 .8f , 2 .4f , 3 .0f , 7 .0f , 10 .f }; // /< radii for different layers
50+ static constexpr float mLength = 27 .15f ; // /< chip length
51+ const float mPitchCol ; // /< pixel column size
52+ const float mPitchRow ; // /< pixel row size
53+ const int mNCols ; // /< number of columns
54+ const int mNRows ; // /< number of rows
55+ const int mNPixels ; // /< total number of pixels
56+ const int mLayer ; // /< chip layer
57+ static constexpr float mPassiveEdgeReadOut = 0 .; // /< width of the readout edge (Passive bottom)
58+ static constexpr float mPassiveEdgeTop = 0 .; // /< Passive area on top
59+ static constexpr float mPassiveEdgeSide = 0 .; // /< width of Passive area on left/right of the sensor
60+ const float mActiveMatrixSizeCols ; // /< Active size along columns
61+ const float mActiveMatrixSizeRows ; // /< Active size along rows
62+
63+ // effective thickness of sensitive layer, accounting for charge collection non-uniformity , https://alice.its.cern.ch/jira/browse/AOC-46
64+ static constexpr float mSensorLayerThicknessEff = 28 .e-4 ; // /< effective thickness of sensitive part
65+ static constexpr float mSensorLayerThickness = 30 .e-4 ; // /< physical thickness of sensitive part
66+ const float mSensorSizeCols ; // /< SensorSize along columns
67+ const float mSensorSizeRows ; // /< SensorSize along rows
6068
6169 ~SegmentationSuperAlpide () = default ;
6270
@@ -65,23 +73,23 @@ class SegmentationSuperAlpide
6573 // / \param xCurved Detector local curved coordinate x in cm with respect to
6674 // / the center of the sensitive volume.
6775 // / \param yCurved Detector local curved coordinate y in cm with respect to
68- // / the center of the sensitive volulme .
76+ // / the center of the sensitive volume .
6977 // / \param xFlat Detector local flat coordinate x in cm with respect to
7078 // / the center of the sensitive volume.
7179 // / \param yFlat Detector local flat coordinate y in cm with respect to
72- // / the center of the sensitive volulme .
80+ // / the center of the sensitive volume .
7381 void curvedToFlat (float xCurved, float yCurved, float & xFlat, float & yFlat);
7482
7583 // / Transformation from the flat surface to a curved surface
7684 // / It works only if the detector is not rototraslated
7785 // / \param xFlat Detector local flat coordinate x in cm with respect to
7886 // / the center of the sensitive volume.
7987 // / \param yFlat Detector local flat coordinate y in cm with respect to
80- // / the center of the sensitive volulme .
88+ // / the center of the sensitive volume .
8189 // / \param xCurved Detector local curved coordinate x in cm with respect to
8290 // / the center of the sensitive volume.
8391 // / \param yCurved Detector local curved coordinate y in cm with respect to
84- // / the center of the sensitive volulme .
92+ // / the center of the sensitive volume .
8593 void flatToCurved (float xFlat, float yFlat, float & xCurved, float & yCurved);
8694
8795 // / Transformation from Geant detector centered local coordinates (cm) to
@@ -92,7 +100,7 @@ class SegmentationSuperAlpide
92100 // / \param float x Detector local coordinate x in cm with respect to
93101 // / the center of the sensitive volume.
94102 // / \param float z Detector local coordinate z in cm with respect to
95- // / the center of the sensitive volulme .
103+ // / the center of the sensitive volume .
96104 // / \param int iRow Detector x cell coordinate. Has the range 0 <= iRow < mNumberOfRows
97105 // / \param int iCol Detector z cell coordinate. Has the range 0 <= iCol < mNumberOfColumns
98106 bool localToDetector (float x, float z, int & iRow, int & iCol);
@@ -106,7 +114,7 @@ class SegmentationSuperAlpide
106114 // / \param float x Detector local coordinate x in cm with respect to the
107115 // / center of the sensitive volume.
108116 // / \param float z Detector local coordinate z in cm with respect to the
109- // / center of the sensitive volulme .
117+ // / center of the sensitive volume .
110118 // / If iRow and or iCol is outside of the segmentation range a value of -0.5*Dx()
111119 // / or -0.5*Dz() is returned.
112120 bool detectorToLocal (int iRow, int iCol, float & xRow, float & zCol);
@@ -122,11 +130,14 @@ class SegmentationSuperAlpide
122130 {
123131 return 0.5 * ((mActiveMatrixSizeRows - mPassiveEdgeTop + mPassiveEdgeReadOut ) - mPitchRow );
124132 }
125- static constexpr float getFirstColCoordinate () { return 0.5 * (mPitchCol - mActiveMatrixSizeCols ); }
133+ float getFirstColCoordinate ()
134+ {
135+ return 0.5 * (mPitchCol - mActiveMatrixSizeCols );
136+ }
126137
127138 void print ();
128139
129- ClassDefNV (SegmentationSuperAlpide, 1 ); // Segmentation class upgrade pixels
140+ ClassDefNV (SegmentationSuperAlpide, 2 ); // Segmentation class upgrade pixels
130141};
131142
132143inline void SegmentationSuperAlpide::curvedToFlat (float xCurved, float yCurved, float & xFlat, float & yFlat)
0 commit comments