Skip to content

Commit c6a2064

Browse files
committed
add passive edge to each pixel
1 parent 5cc27a8 commit c6a2064

5 files changed

Lines changed: 42 additions & 14 deletions

File tree

Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ struct ChipSpecifics {
2828
float PassiveEdgeReadOut = 0.;
2929
float PassiveEdgeTop = 0.;
3030
float PassiveEdgeSide = 0.;
31+
float PixelPassiveEdgeX = 0.;
32+
float PixelPassiveEdgeZ = 0.;
3133
float SensorLayerThicknessEff = 0.;
3234
float SensorLayerThickness = 0.;
3335

@@ -45,6 +47,11 @@ struct ITOFChipSpecifics : ChipSpecifics {
4547
NRows = 271;
4648
PitchCol = 250.00e-4;
4749
PitchRow = 100.00e-4;
50+
PassiveEdgeReadOut = 0.;
51+
PassiveEdgeTop = 0.;
52+
PassiveEdgeSide = 0.;
53+
PixelPassiveEdgeX = 0.001;
54+
PixelPassiveEdgeZ = 0.001;
4855
SensorLayerThicknessEff = 50.e-4;
4956
SensorLayerThickness = 50.e-4;
5057
}
@@ -59,6 +66,9 @@ struct OTOFChipSpecifics : ChipSpecifics {
5966
PitchRow = 100.00e-4;
6067
PassiveEdgeTop = 50.e-4;
6168
PassiveEdgeSide = 115.8e-4;
69+
PassiveEdgeReadOut = 50.e-4;
70+
PixelPassiveEdgeX = 0.001;
71+
PixelPassiveEdgeZ = 0.001;
6272
SensorLayerThicknessEff = 50.e-4;
6373
SensorLayerThickness = 50.e-4;
6474
}

Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,12 @@
1919
#pragma link C++ class o2::iotof::IOTOFBaseParam + ;
2020
#pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::IOTOFBaseParam> + ;
2121

22-
#endif
22+
#pragma link C++ class o2::iotof::ChipSpecifics + ;
23+
#pragma link C++ class o2::iotof::ITOFChipSpecifics + ;
24+
#pragma link C++ class o2::iotof::OTOFChipSpecifics + ;
25+
#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ;
26+
#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ;
27+
#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ;
28+
#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ;
29+
30+
#endif

Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Segmentation.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Segmentation
4242
~Segmentation() = default;
4343

4444
void configChip(const int nCols, const int nRows, const float pitchCol, const float pitchRow, const float passiveEdgeReadOut, const float passiveEdgeTop,
45-
const float passiveEdgeSide, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID);
45+
const float passiveEdgeSide, const float PixelPassiveEdgeX, const float PixelPassiveEdgeZ, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID);
4646
void configChip(const ChipSpecifics& specsConfig, const int subDetectorID);
4747

4848
/// Transformation from Geant detector centered local coordinates (cm) to
@@ -181,6 +181,11 @@ inline void Segmentation::localToDetectorUnchecked(float xRow, float zCol, int&
181181
zCol += 0.5 * specsConfig.ActiveMatrixSizeCols(); // coordinate wrt left edge of Active matrix
182182
iRow = int(xRow / specsConfig.PitchRow);
183183
iCol = int(zCol / specsConfig.PitchCol);
184+
// check pixel passive region
185+
if (std::abs(xRow - (iRow + 0.5) * specsConfig.PitchRow) > (0.5 * specsConfig.PitchRow - specsConfig.PixelPassiveEdgeX) || std::abs(zCol - (iCol + 0.5) * specsConfig.PitchCol) > (0.5 * specsConfig.PitchCol - specsConfig.PixelPassiveEdgeZ)) {
186+
iRow = iCol = -1;
187+
return;
188+
}
184189
if (xRow < 0) {
185190
iRow -= 1;
186191
}
@@ -206,6 +211,11 @@ inline bool Segmentation::localToDetector(float xRow, float zCol, int& iRow, int
206211
}
207212
iRow = int(xRow / specsConfig.PitchRow);
208213
iCol = int(zCol / specsConfig.PitchCol);
214+
// check pixel passive region
215+
if (std::abs(xRow - (iRow + 0.5) * specsConfig.PitchRow) > (0.5 * specsConfig.PitchRow - specsConfig.PixelPassiveEdgeX) || std::abs(zCol - (iCol + 0.5) * specsConfig.PitchCol) > (0.5 * specsConfig.PitchCol - specsConfig.PixelPassiveEdgeZ)) {
216+
iRow = iCol = -1;
217+
return false;
218+
}
209219
return true;
210220
}
211221

Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
#pragma link C++ class o2::iotof::DPLDigitizerParam + ;
2828
#pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::DPLDigitizerParam> + ;
2929

30-
#pragma link C++ class o2::iotof::ChipSpecifics + ;
31-
#pragma link C++ class o2::iotof::ITOFChipSpecifics + ;
32-
#pragma link C++ class o2::iotof::OTOFChipSpecifics + ;
33-
#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ;
34-
#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ;
35-
#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ;
36-
#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ;
30+
//#pragma link C++ class o2::iotof::ChipSpecifics + ;
31+
//#pragma link C++ class o2::iotof::ITOFChipSpecifics + ;
32+
//#pragma link C++ class o2::iotof::OTOFChipSpecifics + ;
33+
//#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ;
34+
//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ;
35+
//#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ;
36+
//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ;
3737

3838
#endif

Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Segmentation.cxx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,21 @@ Segmentation::Segmentation()
3939
} else {
4040
auto& itofPars = ITOFChipSpecificParam::Instance();
4141
auto& otofPars = OTOFChipSpecificParam::Instance();
42-
const ChipSpecifics mITofChipPars(itofPars.NCols, itofPars.NRows, itofPars.PitchCol, itofPars.PitchRow, itofPars.PassiveEdgeReadOut, itofPars.PassiveEdgeTop, itofPars.PassiveEdgeSide, itofPars.SensorLayerThicknessEff, itofPars.SensorLayerThickness);
43-
const ChipSpecifics mOTofChipPars(otofPars.NCols, otofPars.NRows, otofPars.PitchCol, otofPars.PitchRow, otofPars.PassiveEdgeReadOut, otofPars.PassiveEdgeTop, otofPars.PassiveEdgeSide, otofPars.SensorLayerThicknessEff, otofPars.SensorLayerThickness);
42+
const ChipSpecifics mITofChipPars(itofPars.NCols, itofPars.NRows, itofPars.PitchCol, itofPars.PitchRow, itofPars.PassiveEdgeReadOut, itofPars.PassiveEdgeTop, itofPars.PassiveEdgeSide, itofPars.PixelPassiveEdgeX, itofPars.PixelPassiveEdgeZ, itofPars.SensorLayerThicknessEff, itofPars.SensorLayerThickness);
43+
const ChipSpecifics mOTofChipPars(otofPars.NCols, otofPars.NRows, otofPars.PitchCol, otofPars.PitchRow, otofPars.PassiveEdgeReadOut, otofPars.PassiveEdgeTop, otofPars.PassiveEdgeSide, otofPars.PixelPassiveEdgeX, otofPars.PixelPassiveEdgeZ, otofPars.SensorLayerThicknessEff, otofPars.SensorLayerThickness);
4444

4545
configChip(mITofChipPars, 0 /* subDetectorID for iTOF */);
4646
configChip(mOTofChipPars, 1 /* subDetectorID for oTOF */);
4747
}
4848
}
4949

5050
void Segmentation::configChip(const int nCols, const int nRows, const float pitchCol, const float pitchRow, const float passiveEdgeReadOut,
51-
const float passiveEdgeTop, const float passiveEdgeSide, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID)
51+
const float passiveEdgeTop, const float passiveEdgeSide, const float pixelPassiveEdgeX, const float pixelPassiveEdgeZ, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID)
5252
{
5353
if (subDetectorID == 0) {
54-
mITofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, sensorLayerThicknessEff, sensorLayerThickness);
54+
mITofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, pixelPassiveEdgeX, pixelPassiveEdgeZ, sensorLayerThicknessEff, sensorLayerThickness);
5555
} else if (subDetectorID == 1) {
56-
mOTofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, sensorLayerThicknessEff, sensorLayerThickness);
56+
mOTofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, pixelPassiveEdgeX, pixelPassiveEdgeZ, sensorLayerThicknessEff, sensorLayerThickness);
5757
} else {
5858
printf("Invalid subDetectorID %d. Must be 0 (iTOF) or 1 (oTOF). No configuration applied.\n", subDetectorID);
5959
}

0 commit comments

Comments
 (0)