Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ struct ChipSpecifics {
float PassiveEdgeReadOut = 0.;
float PassiveEdgeTop = 0.;
float PassiveEdgeSide = 0.;
float PixelPassiveEdgeX = 0.;
float PixelPassiveEdgeZ = 0.;
float SensorLayerThicknessEff = 0.;
float SensorLayerThickness = 0.;

Expand All @@ -45,6 +47,11 @@ struct ITOFChipSpecifics : ChipSpecifics {
NRows = 271;
PitchCol = 250.00e-4;
PitchRow = 100.00e-4;
PassiveEdgeReadOut = 0.;
PassiveEdgeTop = 0.;
PassiveEdgeSide = 0.;
PixelPassiveEdgeX = 0.;
PixelPassiveEdgeZ = 0.;
SensorLayerThicknessEff = 50.e-4;
SensorLayerThickness = 50.e-4;
}
Expand All @@ -59,6 +66,9 @@ struct OTOFChipSpecifics : ChipSpecifics {
PitchRow = 100.00e-4;
PassiveEdgeTop = 50.e-4;
PassiveEdgeSide = 115.8e-4;
PassiveEdgeReadOut = 50.e-4;
PixelPassiveEdgeX = 0.;
PixelPassiveEdgeZ = 0.;
SensorLayerThicknessEff = 50.e-4;
SensorLayerThickness = 50.e-4;
}
Expand Down
4 changes: 2 additions & 2 deletions Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class o2::iotof::GeometryTGeo +
#pragma link C++ class o2::iotof::GeometryTGeo + ;
#pragma link C++ class o2::iotof::IOTOFBaseParam + ;
#pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::IOTOFBaseParam> + ;

#endif
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Segmentation
~Segmentation() = default;

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

/// Transformation from Geant detector centered local coordinates (cm) to
Expand Down Expand Up @@ -181,6 +181,11 @@ inline void Segmentation::localToDetectorUnchecked(float xRow, float zCol, int&
zCol += 0.5 * specsConfig.ActiveMatrixSizeCols(); // coordinate wrt left edge of Active matrix
iRow = int(xRow / specsConfig.PitchRow);
iCol = int(zCol / specsConfig.PitchCol);
// check pixel passive region
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)) {
iRow = iCol = -1;
return;
}
if (xRow < 0) {
iRow -= 1;
}
Expand All @@ -206,6 +211,11 @@ inline bool Segmentation::localToDetector(float xRow, float zCol, int& iRow, int
}
iRow = int(xRow / specsConfig.PitchRow);
iCol = int(zCol / specsConfig.PitchCol);
// check pixel passive region
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)) {
iRow = iCol = -1;
return false;
}
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,21 @@ Segmentation::Segmentation()
} else {
auto& itofPars = ITOFChipSpecificParam::Instance();
auto& otofPars = OTOFChipSpecificParam::Instance();
const ChipSpecifics mITofChipPars(itofPars.NCols, itofPars.NRows, itofPars.PitchCol, itofPars.PitchRow, itofPars.PassiveEdgeReadOut, itofPars.PassiveEdgeTop, itofPars.PassiveEdgeSide, itofPars.SensorLayerThicknessEff, itofPars.SensorLayerThickness);
const ChipSpecifics mOTofChipPars(otofPars.NCols, otofPars.NRows, otofPars.PitchCol, otofPars.PitchRow, otofPars.PassiveEdgeReadOut, otofPars.PassiveEdgeTop, otofPars.PassiveEdgeSide, otofPars.SensorLayerThicknessEff, otofPars.SensorLayerThickness);
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);
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);

configChip(mITofChipPars, 0 /* subDetectorID for iTOF */);
configChip(mOTofChipPars, 1 /* subDetectorID for oTOF */);
}
}

void Segmentation::configChip(const int nCols, const int nRows, const float pitchCol, const float pitchRow, const float passiveEdgeReadOut,
const float passiveEdgeTop, const float passiveEdgeSide, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID)
const float passiveEdgeTop, const float passiveEdgeSide, const float pixelPassiveEdgeX, const float pixelPassiveEdgeZ, const float sensorLayerThicknessEff, const float sensorLayerThickness, const int subDetectorID)
{
if (subDetectorID == 0) {
mITofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, sensorLayerThicknessEff, sensorLayerThickness);
mITofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, pixelPassiveEdgeX, pixelPassiveEdgeZ, sensorLayerThicknessEff, sensorLayerThickness);
} else if (subDetectorID == 1) {
mOTofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, sensorLayerThicknessEff, sensorLayerThickness);
mOTofSpecsConfig = ChipSpecifics(nCols, nRows, pitchCol, pitchRow, passiveEdgeReadOut, passiveEdgeTop, passiveEdgeSide, pixelPassiveEdgeX, pixelPassiveEdgeZ, sensorLayerThicknessEff, sensorLayerThickness);
} else {
printf("Invalid subDetectorID %d. Must be 0 (iTOF) or 1 (oTOF). No configuration applied.\n", subDetectorID);
}
Expand Down
Loading