From c6a206428ecc6fce29244cbbac8efa06e1cd3c4d Mon Sep 17 00:00:00 2001 From: maciacco Date: Thu, 30 Jul 2026 15:18:53 +0200 Subject: [PATCH 1/3] add passive edge to each pixel --- .../IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h | 10 ++++++++++ .../ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h | 10 +++++++++- .../include/IOTOFSimulation/Segmentation.h | 12 +++++++++++- .../IOTOF/simulation/src/IOTOFSimulationLinkDef.h | 14 +++++++------- .../ALICE3/IOTOF/simulation/src/Segmentation.cxx | 10 +++++----- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h b/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h index 7d3dbdc1bd1dc..9cd5cce07645d 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h @@ -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.; @@ -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.001; + PixelPassiveEdgeZ = 0.001; SensorLayerThicknessEff = 50.e-4; SensorLayerThickness = 50.e-4; } @@ -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.001; + PixelPassiveEdgeZ = 0.001; SensorLayerThicknessEff = 50.e-4; SensorLayerThickness = 50.e-4; } diff --git a/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h b/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h index 5cbff299d78c1..76f24de0d1476 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h @@ -19,4 +19,12 @@ #pragma link C++ class o2::iotof::IOTOFBaseParam + ; #pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::IOTOFBaseParam> + ; -#endif \ No newline at end of file +#pragma link C++ class o2::iotof::ChipSpecifics + ; +#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; +#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; +#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; +#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; +#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; +#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; + +#endif diff --git a/Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Segmentation.h b/Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Segmentation.h index cd0ab55bd03d7..4425676b5fdcb 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Segmentation.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Segmentation.h @@ -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 @@ -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; } @@ -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; } diff --git a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h index 2384d207a03b0..9b8af67ef0d06 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h @@ -27,12 +27,12 @@ #pragma link C++ class o2::iotof::DPLDigitizerParam + ; #pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::DPLDigitizerParam> + ; -#pragma link C++ class o2::iotof::ChipSpecifics + ; -#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; -#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; -#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; -#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; -#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; -#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; +//#pragma link C++ class o2::iotof::ChipSpecifics + ; +//#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; +//#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; +//#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; +//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; +//#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; +//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; #endif diff --git a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Segmentation.cxx b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Segmentation.cxx index ea03b3d317cdc..6e4624294a60e 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Segmentation.cxx +++ b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Segmentation.cxx @@ -39,8 +39,8 @@ 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 */); @@ -48,12 +48,12 @@ Segmentation::Segmentation() } 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); } From d3320560bd060062d54021fcd00cb1cd5d36daaf Mon Sep 17 00:00:00 2001 From: maciacco Date: Thu, 30 Jul 2026 18:15:12 +0200 Subject: [PATCH 2/3] set default to 0 --- .../ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h b/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h index 9cd5cce07645d..f81f3f9484475 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h @@ -50,8 +50,8 @@ struct ITOFChipSpecifics : ChipSpecifics { PassiveEdgeReadOut = 0.; PassiveEdgeTop = 0.; PassiveEdgeSide = 0.; - PixelPassiveEdgeX = 0.001; - PixelPassiveEdgeZ = 0.001; + PixelPassiveEdgeX = 0.; + PixelPassiveEdgeZ = 0.; SensorLayerThicknessEff = 50.e-4; SensorLayerThickness = 50.e-4; } @@ -67,8 +67,8 @@ struct OTOFChipSpecifics : ChipSpecifics { PassiveEdgeTop = 50.e-4; PassiveEdgeSide = 115.8e-4; PassiveEdgeReadOut = 50.e-4; - PixelPassiveEdgeX = 0.001; - PixelPassiveEdgeZ = 0.001; + PixelPassiveEdgeX = 0.; + PixelPassiveEdgeZ = 0.; SensorLayerThicknessEff = 50.e-4; SensorLayerThickness = 50.e-4; } From 8cb156d7c2442ab4650792be6c5e6e37577fa5e1 Mon Sep 17 00:00:00 2001 From: maciacco Date: Fri, 31 Jul 2026 15:20:56 +0200 Subject: [PATCH 3/3] revert linkdef --- .../ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h | 10 +--------- .../IOTOF/simulation/src/IOTOFSimulationLinkDef.h | 14 +++++++------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h b/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h index 76f24de0d1476..e83f4fb51b130 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/base/src/IOTOFBaseLinkDef.h @@ -15,16 +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> + ; -#pragma link C++ class o2::iotof::ChipSpecifics + ; -#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; -#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; -#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; -#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; -#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; -#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; - #endif diff --git a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h index 9b8af67ef0d06..2384d207a03b0 100644 --- a/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h +++ b/Detectors/Upgrades/ALICE3/IOTOF/simulation/src/IOTOFSimulationLinkDef.h @@ -27,12 +27,12 @@ #pragma link C++ class o2::iotof::DPLDigitizerParam + ; #pragma link C++ class o2::conf::ConfigurableParamHelper < o2::iotof::DPLDigitizerParam> + ; -//#pragma link C++ class o2::iotof::ChipSpecifics + ; -//#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; -//#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; -//#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; -//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; -//#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; -//#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; +#pragma link C++ class o2::iotof::ChipSpecifics + ; +#pragma link C++ class o2::iotof::ITOFChipSpecifics + ; +#pragma link C++ class o2::iotof::OTOFChipSpecifics + ; +#pragma link C++ class o2::iotof::ITOFChipSpecificParam + ; +#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::ITOFChipSpecificParam, o2::iotof::ITOFChipSpecifics> + ; +#pragma link C++ class o2::iotof::OTOFChipSpecificParam + ; +#pragma link C++ class o2::conf::ConfigurableParamPromoter < o2::iotof::OTOFChipSpecificParam, o2::iotof::OTOFChipSpecifics> + ; #endif