From 977a13b9e1801aff59c21d9118a9fa060f7d45bc Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 24 May 2026 19:31:13 +0200 Subject: [PATCH 1/6] set checkIsInside to true by default --- src/TRestDetectorElectronDiffusionProcess.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TRestDetectorElectronDiffusionProcess.cxx b/src/TRestDetectorElectronDiffusionProcess.cxx index a8fbc054..65fd7d97 100644 --- a/src/TRestDetectorElectronDiffusionProcess.cxx +++ b/src/TRestDetectorElectronDiffusionProcess.cxx @@ -58,6 +58,7 @@ void TRestDetectorElectronDiffusionProcess::Initialize() { fReadout = nullptr; fRandom = nullptr; + fCheckIsInside = true; } void TRestDetectorElectronDiffusionProcess::LoadConfig(const string& configFilename, const string& name) { @@ -319,6 +320,6 @@ void TRestDetectorElectronDiffusionProcess::InitFromConfigFile() { fSeed = static_cast(StringToInteger(GetParameter("seed", "0"))); fPoissonElectronExcitation = StringToBool(GetParameter("poissonElectronExcitation", "true")); fUnitElectronEnergy = StringToBool(GetParameter("unitElectronEnergy", "false")); - fCheckIsInside = StringToBool(GetParameter("checkIsInside", "false")); + fCheckIsInside = StringToBool(GetParameter("checkIsInside", "true")); fUseFanoFactor = StringToBool(GetParameter("useFano", "false")); } From 90625cf83308f857c198f693bf216b9fa8aa58b7 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 24 May 2026 19:32:11 +0200 Subject: [PATCH 2/6] allow 0 long or trans diffusion coeff to disable them --- src/TRestDetectorElectronDiffusionProcess.cxx | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/TRestDetectorElectronDiffusionProcess.cxx b/src/TRestDetectorElectronDiffusionProcess.cxx index 65fd7d97..bc3acb1a 100644 --- a/src/TRestDetectorElectronDiffusionProcess.cxx +++ b/src/TRestDetectorElectronDiffusionProcess.cxx @@ -46,8 +46,8 @@ void TRestDetectorElectronDiffusionProcess::Initialize() { fAttachment = 0; fGasPressure = -1; - fTransversalDiffusionCoefficient = 0; - fLongitudinalDiffusionCoefficient = 0; + fTransversalDiffusionCoefficient = -1; + fLongitudinalDiffusionCoefficient = -1; fWValue = 0; fFanoFactor = 0; @@ -117,11 +117,11 @@ void TRestDetectorElectronDiffusionProcess::InitProcess() { fFanoFactor = fGas->GetGasFanoFactor(); } - if (fLongitudinalDiffusionCoefficient <= 0) { + if (fLongitudinalDiffusionCoefficient < 0) { fLongitudinalDiffusionCoefficient = fGas->GetLongitudinalDiffusion(); } // (cm)^1/2 - if (fTransversalDiffusionCoefficient <= 0) { + if (fTransversalDiffusionCoefficient < 0) { fTransversalDiffusionCoefficient = fGas->GetTransversalDiffusion(); } // (cm)^1/2 } @@ -239,18 +239,28 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu } TVector3 positionAfterDiffusion = {x, y, z}; - positionAfterDiffusion += { - fRandom->Gaus(0, transversalDiffusion), // - fRandom->Gaus(0, transversalDiffusion), // - fRandom->Gaus(0, longitudinalDiffusion) // - }; - if (plane->GetDistanceTo(positionAfterDiffusion) < 0) { + if (transversalDiffusion > 0) { + positionAfterDiffusion += { + fRandom->Gaus(0, transversalDiffusion), // + fRandom->Gaus(0, transversalDiffusion), // + 0 // + }; + } + if (longitudinalDiffusion > 0) { + positionAfterDiffusion += { + 0, // + 0, // + fRandom->Gaus(0, longitudinalDiffusion) // + }; + } + + if (plane->GetDistanceTo(positionAfterDiffusion) < 0 && longitudinalDiffusion > 0) { // electron has been moved under the plane positionAfterDiffusion.SetZ( plane->GetPosition().Z() + 1E-6 * plane->GetNormal().Z()); // add a delta to make sure readout finds it } - if (plane->GetDistanceTo(positionAfterDiffusion) > plane->GetHeight()) { + if (plane->GetDistanceTo(positionAfterDiffusion) > plane->GetHeight() && longitudinalDiffusion > 0) { // electron has been moved over the plane positionAfterDiffusion.SetZ( plane->GetPosition().Z() + plane->GetHeight() - From b2c26fb6ee12dacefbdaa411b71d4ffae1996b17 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 24 May 2026 19:33:50 +0200 Subject: [PATCH 3/6] improve code readability --- src/TRestDetectorElectronDiffusionProcess.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TRestDetectorElectronDiffusionProcess.cxx b/src/TRestDetectorElectronDiffusionProcess.cxx index bc3acb1a..6c55c488 100644 --- a/src/TRestDetectorElectronDiffusionProcess.cxx +++ b/src/TRestDetectorElectronDiffusionProcess.cxx @@ -185,7 +185,7 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu const Double_t z = hits->GetZ(hitIndex); for (int p = 0; p < fReadout->GetNumberOfReadoutPlanes(); p++) { - TRestDetectorReadoutPlane* plane = &(*fReadout)[p]; + TRestDetectorReadoutPlane* plane = fReadout->GetReadoutPlane(p); const auto planeType = plane->GetType(); if (planeType == "veto") { // do not drift veto planes From 1dcd63c657fcfbc692d90585ec0544b52978ce57 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 24 May 2026 19:34:50 +0200 Subject: [PATCH 4/6] avoid duplicated processing of hit when several planes --- src/TRestDetectorElectronDiffusionProcess.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/TRestDetectorElectronDiffusionProcess.cxx b/src/TRestDetectorElectronDiffusionProcess.cxx index 6c55c488..eccbe517 100644 --- a/src/TRestDetectorElectronDiffusionProcess.cxx +++ b/src/TRestDetectorElectronDiffusionProcess.cxx @@ -283,6 +283,7 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu } fOutputHitsEvent->AddHit(positionAfterDiffusion.X(), positionAfterDiffusion.Y(), positionAfterDiffusion.Z(), electronEnergy, time, type); + break; // avoid redoing for other planes (happens if fCheckIsInside is false) } } } From 454f44c15c94df377be8ee01cdb4bd1f89dad0d3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 17:37:18 +0000 Subject: [PATCH 5/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/TRestDetectorElectronDiffusionProcess.cxx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/TRestDetectorElectronDiffusionProcess.cxx b/src/TRestDetectorElectronDiffusionProcess.cxx index eccbe517..6ae60c61 100644 --- a/src/TRestDetectorElectronDiffusionProcess.cxx +++ b/src/TRestDetectorElectronDiffusionProcess.cxx @@ -243,13 +243,13 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu positionAfterDiffusion += { fRandom->Gaus(0, transversalDiffusion), // fRandom->Gaus(0, transversalDiffusion), // - 0 // + 0 // }; } if (longitudinalDiffusion > 0) { positionAfterDiffusion += { - 0, // - 0, // + 0, // + 0, // fRandom->Gaus(0, longitudinalDiffusion) // }; } @@ -260,7 +260,8 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu plane->GetPosition().Z() + 1E-6 * plane->GetNormal().Z()); // add a delta to make sure readout finds it } - if (plane->GetDistanceTo(positionAfterDiffusion) > plane->GetHeight() && longitudinalDiffusion > 0) { + if (plane->GetDistanceTo(positionAfterDiffusion) > plane->GetHeight() && + longitudinalDiffusion > 0) { // electron has been moved over the plane positionAfterDiffusion.SetZ( plane->GetPosition().Z() + plane->GetHeight() - @@ -283,7 +284,7 @@ TRestEvent* TRestDetectorElectronDiffusionProcess::ProcessEvent(TRestEvent* inpu } fOutputHitsEvent->AddHit(positionAfterDiffusion.X(), positionAfterDiffusion.Y(), positionAfterDiffusion.Z(), electronEnergy, time, type); - break; // avoid redoing for other planes (happens if fCheckIsInside is false) + break; // avoid redoing for other planes (happens if fCheckIsInside is false) } } } From ffc32c0d1a6be84f72fc2a5984a5c0ab0b12c40e Mon Sep 17 00:00:00 2001 From: cmargalejo Date: Fri, 12 Jun 2026 18:56:08 +0200 Subject: [PATCH 6/6] Trigger CI: pick up restG4 validation reference fix The validation workflows cache the build with key BRANCH_NAME-sha, so a re-run cannot pick up the restG4 fix (rest-for-physics/restG4#148); only a new commit invalidates the cache.