Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
a4bbded
ITS3: Add metalstack to geometry
f3sch Nov 27, 2024
be3c6c0
ITS3: correction to epitaxial layer
f3sch Jan 23, 2025
e0c0633
ITS3: small readme changes
f3sch Dec 18, 2024
6af64f3
ITS3: Fix metal stack geo
f3sch Jan 22, 2025
9a055bc
ITS3: change severity to debug
f3sch Jan 22, 2025
b9ae938
ITS3: modify layer geo
f3sch Jan 23, 2025
c27c43c
ITS3: make segmentation class header only
f3sch Jan 23, 2025
d3a120e
ITS3: move pixelarray to start at zero phi
f3sch Jan 23, 2025
212a000
ITS3: macro fixes
f3sch Jan 23, 2025
f293035
ITS3: double precision for geometry + z-shift
f3sch Jan 24, 2025
a7d0cf7
ITS3: Digitizer constness
f3sch Jan 24, 2025
2ce3be3
ITS3: macro include cluster eta, row, col
f3sch Jan 24, 2025
79732e3
ITS3: extend wrapvolZ to include outer edges
f3sch Jan 25, 2025
5a672de
ITS3: remove unused var
f3sch Jan 27, 2025
f8194f2
ITS3: cluster macro
f3sch Jan 27, 2025
a632080
ITS3: Add DigiParams
f3sch Feb 3, 2025
7ad18a7
ITS3: Digitizer option to pick response function
f3sch Jan 31, 2025
acd47bc
ITS3: build APTS response function
f3sch Jan 31, 2025
c70b15b
ITS3: renamed SuperAlpide to Mosaix
f3sch Jan 31, 2025
d2e060b
ITS3: digitizer pre-set response names
f3sch Feb 1, 2025
e97cf5d
ITS3: remove unneeded variables + make segmentation fully float
f3sch Feb 1, 2025
799f309
ITS3: scale pixel-resp + fix OB resp func
f3sch Feb 1, 2025
1e9006e
ITS3: digitizer offset for Alpide resp.
f3sch Feb 3, 2025
73853a8
ITS3: Segmenatation remove member prefix from vars
f3sch Feb 3, 2025
0cd2559
ITS3: shift back to nominal pos + proper metal stack position
f3sch Feb 4, 2025
214575e
ITS3: remove newline from digiparams
f3sch Feb 7, 2025
292abdc
ITS3: make segmentation mostly constexpr
f3sch Feb 10, 2025
cbaa5d4
ITS3: minor changes in Digitizer for float
f3sch Feb 10, 2025
2e0a53d
ITS3: move pixel specs down
f3sch Feb 11, 2025
f6161d3
ITS3: account in segmentation trans for nominal shift
f3sch Feb 11, 2025
882545b
ITS3: Digitizer flip row for IB for APTS
f3sch Feb 11, 2025
7ac713e
ITS3: Add explanation to SegmentationMosaix
f3sch Feb 14, 2025
9b9bf02
ITS3: split topo dict into IB and OB
f3sch Feb 27, 2025
ea84cf6
ITS3: add opt. sanitizer
f3sch Apr 2, 2025
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
Prev Previous commit
Next Next commit
ITS3: minor changes in Digitizer for float
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
  • Loading branch information
f3sch committed Apr 10, 2025
commit cbaa5d4ab97fa7f39726e66fe39e415e11ec94b0
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,14 @@ class Digitizer : public TObject
uint32_t mEventROFrameMin = 0xffffffff; ///< lowest RO frame for processed events (w/o automatic noise ROFs)
uint32_t mEventROFrameMax = 0; ///< highest RO frame forfor processed events (w/o automatic noise ROFs)

const std::array<o2::its3::SegmentationMosaix, 3> mIBSegmentations{0, 1, 2};
static constexpr std::array<o2::its3::SegmentationMosaix, 3> mIBSegmentations{0, 1, 2};

o2::itsmft::AlpideSimResponse* mSimRespIB = nullptr; // simulated response for IB
o2::itsmft::AlpideSimResponse* mSimRespOB = nullptr; // simulated response for OB
float mSimRespIBShift{0.}; // adjusting the Y-shift in the IB response function to match sensor local coord.
float mSimRespIBScaleX{1.}; // scale x-local coordinate to response function x-coordinate
float mSimRespIBScaleZ{1.}; // scale z-local coordinate to response function z-coordinate
float mSimRespOBShift{0.}; // adjusting the Y-shift in the OB response function to match sensor local coord.
float mSimRespIBShift{0.f}; // adjusting the Y-shift in the IB response function to match sensor local coord.
float mSimRespIBScaleX{1.f}; // scale x-local coordinate to response function x-coordinate
float mSimRespIBScaleZ{1.f}; // scale z-local coordinate to response function z-coordinate
float mSimRespOBShift{0.f}; // adjusting the Y-shift in the OB response function to match sensor local coord.

const o2::its::GeometryTGeo* mGeometry = nullptr; ///< ITS3 geometry

Expand Down
22 changes: 10 additions & 12 deletions Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ void Digitizer::init()
if (const auto& func = ITS3Params::Instance().chipResponseFunction; func == "Alpide") {
constexpr const char* responseFile = "$(O2_ROOT)/share/Detectors/ITSMFT/data/AlpideResponseData/AlpideResponseData.root";
loadSetResponseFunc("Alpide", responseFile, "response0", responseFile, "response1");
mSimRespIBShift = mSimRespIB->getDepthMax() - SegmentationMosaix::SensorLayerThickness / 2.f + 10.e-4f; // TODO why this offset?
mSimRespIBShift = mSimRespIB->getDepthMax() - SegmentationMosaix::SensorLayerThickness / 2.f + 10.e-4f;
mSimRespOBShift = mSimRespOB->getDepthMax() - SegmentationAlpide::SensorLayerThickness / 2.f;
} else if (func == "APTS") {
constexpr const char* responseFileIB = "$(O2_ROOT)/share/Detectors/Upgrades/ITS3/data/ITS3ChipResponseData/APTSResponseData.root";
constexpr const char* responseFileOB = "$(O2_ROOT)/share/Detectors/ITSMFT/data/AlpideResponseData/AlpideResponseData.root";
loadSetResponseFunc("APTS", responseFileIB, "response1", responseFileOB, "response1");
mSimRespIBShift = mSimRespIB->getDepthMax() - 10.e-4f;
mSimRespIBShift = mSimRespIB->getDepthMax() - 6.5e-4f;
mSimRespOBShift = mSimRespOB->getDepthMax() - SegmentationAlpide::SensorLayerThickness / 2.f;
mSimRespIBScaleX = 0.5 * constants::pixelarray::pixels::apts::pitchX / SegmentationMosaix::PitchRow;
mSimRespIBScaleZ = 0.5 * constants::pixelarray::pixels::apts::pitchZ / SegmentationMosaix::PitchCol;
Expand Down Expand Up @@ -328,15 +328,13 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID

const int maxNrows{innerBarrel ? SegmentationMosaix::NRows : SegmentationAlpide::NRows};
const int maxNcols{innerBarrel ? SegmentationMosaix::NCols : SegmentationAlpide::NCols};
if (rowE >= maxNrows) {
rowE = maxNrows - 1;
}

rowE = std::min(rowE, maxNrows - 1);
colS -= AlpideRespSimMat::NPix / 2;
colE += AlpideRespSimMat::NPix / 2;
colS = std::max(colS, 0);
if (colE >= maxNcols) {
colE = maxNcols - 1;
}
colE = std::min(colE, maxNcols - 1);

int rowSpan = rowE - rowS + 1, colSpan = colE - colS + 1; // size of plaquet where some response is expected
float respMatrix[rowSpan][colSpan]; // response accumulated here
std::fill(&respMatrix[0][0], &respMatrix[0][0] + rowSpan * colSpan, 0.f);
Expand Down Expand Up @@ -379,12 +377,12 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID
float rowMax{}, colMax{};
const AlpideRespSimMat* rspmat{nullptr};
if (innerBarrel) {
rowMax = 0.5 * SegmentationMosaix::PitchRow;
colMax = 0.5 * SegmentationMosaix::PitchCol;
rowMax = 0.5f * SegmentationMosaix::PitchRow;
colMax = 0.5f * SegmentationMosaix::PitchCol;
rspmat = mSimRespIB->getResponse(mSimRespIBScaleX * (xyzLocS.X() - cRowPix), mSimRespIBScaleZ * (xyzLocS.Z() - cColPix), xyzLocS.Y(), flipRow, flipCol, rowMax, colMax);
} else {
rowMax = 0.5 * SegmentationAlpide::PitchRow;
colMax = 0.5 * SegmentationAlpide::PitchCol;
rowMax = 0.5f * SegmentationAlpide::PitchRow;
colMax = 0.5f * SegmentationAlpide::PitchCol;
rspmat = mSimRespOB->getResponse(xyzLocS.X() - cRowPix, xyzLocS.Z() - cColPix, xyzLocS.Y(), flipRow, flipCol, rowMax, colMax);
}

Expand Down