From 92d6aa3cbcd8fe3d21d8fc322ff6a8fa71f2fbfb Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Wed, 26 Feb 2025 13:15:32 +0100 Subject: [PATCH 1/8] implement calculation of sigma (distance) to line observables --- inc/TRestTrackLineAnalysisProcess.h | 2 + src/TRestTrackLineAnalysisProcess.cxx | 76 +++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/inc/TRestTrackLineAnalysisProcess.h b/inc/TRestTrackLineAnalysisProcess.h index 83ae619..df85a0e 100644 --- a/inc/TRestTrackLineAnalysisProcess.h +++ b/inc/TRestTrackLineAnalysisProcess.h @@ -57,6 +57,8 @@ class TRestTrackLineAnalysisProcess : public TRestEventProcess { const char* GetProcessName() const override { return "trackLineAna"; } + TVector3 GetSigmaToLine(TRestTrack* track, TRestTrack* line, bool ponderateByEnergy = true); + // Constructor TRestTrackLineAnalysisProcess(); // Destructor diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 06404ed..c62f969 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -214,6 +214,34 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) fOutTrackEvent->AddTrack(tckY); fOutTrackEvent->SetLevels(); + + auto originalTrackX = fOutTrackEvent->GetTrackById(tckX->GetParentID()); + while(fOutTrackEvent->GetLevelById(originalTrackX->GetTrackID()) > 1){ + originalTrackX = fOutTrackEvent->GetTrackById(originalTrackX->GetParentID()); + } + if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) { + fOutTrackEvent->PrintEvent(); + } + RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID " << tckX->GetTrackID() << RESTendl; + auto sigmaXZ = GetSigmaToLine(originalTrackX, tckX, true); + + auto originalTrackY = fOutTrackEvent->GetTrackById(tckY->GetParentID()); + while(fOutTrackEvent->GetLevelById(originalTrackY->GetTrackID()) > 1){ + originalTrackY = fOutTrackEvent->GetTrackById(originalTrackY->GetParentID()); + } + RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID " << tckY->GetTrackID() << RESTendl; + auto sigmaYZ = GetSigmaToLine(originalTrackY, tckY, true); + auto meanSigmaZ = (sigmaXZ.Z() + sigmaYZ.Z()) * 0.5; + + double totalSigma = TMath::Sqrt(sigmaXZ.X()*sigmaXZ.X() + sigmaYZ.Y()*sigmaYZ.Y() + meanSigmaZ*meanSigmaZ); + + SetObservableValue("sigmaX", sigmaXZ.X()); + SetObservableValue("sigmaY", sigmaYZ.Y()); + SetObservableValue("sigmaZ", meanSigmaZ); + SetObservableValue("sigmaZX", sigmaXZ.Z()); + SetObservableValue("sigmaZY", sigmaYZ.Z()); + SetObservableValue("sigma", totalSigma); + return fOutTrackEvent; } @@ -222,3 +250,51 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) /// processed. Nothing to do... /// void TRestTrackLineAnalysisProcess::EndProcess() {} + + +TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestTrack* line, bool ponderateByEnergy){ + TRestVolumeHits* lineVolHits = line->GetVolumeHits(); + TVector3 sigma2ToLine = TVector3(0,0,0); + for (size_t i = 0; i < track->GetVolumeHits()->GetNumberOfHits(); i++) { + TVector3 hitPos = track->GetVolumeHits()->GetPosition(i); + auto hitEnergy = track->GetVolumeHits()->GetEnergy(i); + size_t closestNodeIndex = lineVolHits->GetClosestHit(hitPos); + + // find second closes node + size_t secondClosestNodeIndex = closestNodeIndex-1; + if (secondClosestNodeIndex < 0) { + secondClosestNodeIndex = closestNodeIndex+1; + } else if (closestNodeIndex == lineVolHits->GetNumberOfHits()-1){ + secondClosestNodeIndex = closestNodeIndex-1; + } else { + auto dist1 = (lineVolHits->GetPosition(secondClosestNodeIndex) - hitPos).Mag(); + auto dist2 = (lineVolHits->GetPosition(closestNodeIndex+1) - hitPos).Mag(); + if (dist1 > dist2){ + secondClosestNodeIndex = closestNodeIndex+1; + } + } + TVector3 lineDirector = lineVolHits->GetPosition(closestNodeIndex) - lineVolHits->GetPosition(secondClosestNodeIndex); + TVector3 hitToClosestLinePoint = hitPos - lineVolHits->GetPosition(closestNodeIndex); + TVector3 hitToLine = hitToClosestLinePoint - (hitToClosestLinePoint.Dot(lineDirector.Unit()))*lineDirector.Unit(); + + double toAddX = hitToLine.X()*hitToLine.X(); + double toAddY = hitToLine.Y()*hitToLine.Y(); + double toAddZ = hitToLine.Z()*hitToLine.Z(); + if (ponderateByEnergy){ + toAddX *= hitEnergy; + toAddY *= hitEnergy; + toAddZ *= hitEnergy; + } + sigma2ToLine += TVector3(toAddX, toAddY, toAddZ); + } + + + sigma2ToLine = TVector3(TMath::Sqrt(sigma2ToLine.X()), TMath::Sqrt(sigma2ToLine.Y()), TMath::Sqrt(sigma2ToLine.Z())); + if (ponderateByEnergy){ + auto trackEnergy = track->GetEnergy(); + sigma2ToLine *= 1.0/trackEnergy; + } else { + sigma2ToLine *= 1.0/track->GetVolumeHits()->GetNumberOfHits(); + } + return sigma2ToLine; +} \ No newline at end of file From 8d22efd79c88b2822cd68ac57811bafdf39292b0 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Wed, 26 Feb 2025 13:24:09 +0100 Subject: [PATCH 2/8] add TRestTrackEvent::GetTrackById --- inc/TRestTrackEvent.h | 1 + src/TRestTrackEvent.cxx | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/inc/TRestTrackEvent.h b/inc/TRestTrackEvent.h index 2020c13..c56ab41 100644 --- a/inc/TRestTrackEvent.h +++ b/inc/TRestTrackEvent.h @@ -88,6 +88,7 @@ class TRestTrackEvent : public TRestEvent { Double_t GetEnergy(TString option = ""); Int_t GetLevel(Int_t tck); + Int_t GetLevelById(Int_t tckId); void SetLevels(); inline Int_t GetLevels() const { return fLevels; } diff --git a/src/TRestTrackEvent.cxx b/src/TRestTrackEvent.cxx index 028f2d4..42843d0 100644 --- a/src/TRestTrackEvent.cxx +++ b/src/TRestTrackEvent.cxx @@ -262,6 +262,22 @@ Int_t TRestTrackEvent::GetLevel(Int_t tck) { return lvl; } +Int_t TRestTrackEvent::GetLevelById(Int_t tckId) { + Int_t lvl = 1; + auto track = GetTrackById(tckId); + if(track == nullptr){ + RESTWarning << "Track with ID " << tckId << " not found" << RESTendl; + return -1; + } + Int_t parentTrackId = track->GetParentID(); + + while (parentTrackId > 0) { + lvl++; + parentTrackId = GetTrackById(parentTrackId)->GetParentID(); + } + return lvl; +} + Bool_t TRestTrackEvent::isTopLevel(Int_t tck) { if (GetLevels() == GetLevel(tck)) return true; return false; From 60e67b46e0b494f35090d9c2270a9cac6fd8efd6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:26:05 +0000 Subject: [PATCH 3/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/TRestTrackEvent.cxx | 2 +- src/TRestTrackLineAnalysisProcess.cxx | 59 +++++++++++++++------------ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/TRestTrackEvent.cxx b/src/TRestTrackEvent.cxx index 42843d0..b8b0ae0 100644 --- a/src/TRestTrackEvent.cxx +++ b/src/TRestTrackEvent.cxx @@ -265,7 +265,7 @@ Int_t TRestTrackEvent::GetLevel(Int_t tck) { Int_t TRestTrackEvent::GetLevelById(Int_t tckId) { Int_t lvl = 1; auto track = GetTrackById(tckId); - if(track == nullptr){ + if (track == nullptr) { RESTWarning << "Track with ID " << tckId << " not found" << RESTendl; return -1; } diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index c62f969..0e092f2 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -216,24 +216,27 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) fOutTrackEvent->SetLevels(); auto originalTrackX = fOutTrackEvent->GetTrackById(tckX->GetParentID()); - while(fOutTrackEvent->GetLevelById(originalTrackX->GetTrackID()) > 1){ + while (fOutTrackEvent->GetLevelById(originalTrackX->GetTrackID()) > 1) { originalTrackX = fOutTrackEvent->GetTrackById(originalTrackX->GetParentID()); } if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) { fOutTrackEvent->PrintEvent(); } - RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID " << tckX->GetTrackID() << RESTendl; + RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID " + << tckX->GetTrackID() << RESTendl; auto sigmaXZ = GetSigmaToLine(originalTrackX, tckX, true); auto originalTrackY = fOutTrackEvent->GetTrackById(tckY->GetParentID()); - while(fOutTrackEvent->GetLevelById(originalTrackY->GetTrackID()) > 1){ + while (fOutTrackEvent->GetLevelById(originalTrackY->GetTrackID()) > 1) { originalTrackY = fOutTrackEvent->GetTrackById(originalTrackY->GetParentID()); } - RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID " << tckY->GetTrackID() << RESTendl; + RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID " + << tckY->GetTrackID() << RESTendl; auto sigmaYZ = GetSigmaToLine(originalTrackY, tckY, true); auto meanSigmaZ = (sigmaXZ.Z() + sigmaYZ.Z()) * 0.5; - double totalSigma = TMath::Sqrt(sigmaXZ.X()*sigmaXZ.X() + sigmaYZ.Y()*sigmaYZ.Y() + meanSigmaZ*meanSigmaZ); + double totalSigma = + TMath::Sqrt(sigmaXZ.X() * sigmaXZ.X() + sigmaYZ.Y() * sigmaYZ.Y() + meanSigmaZ * meanSigmaZ); SetObservableValue("sigmaX", sigmaXZ.X()); SetObservableValue("sigmaY", sigmaYZ.Y()); @@ -251,36 +254,38 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) /// void TRestTrackLineAnalysisProcess::EndProcess() {} - -TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestTrack* line, bool ponderateByEnergy){ +TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestTrack* line, + bool ponderateByEnergy) { TRestVolumeHits* lineVolHits = line->GetVolumeHits(); - TVector3 sigma2ToLine = TVector3(0,0,0); + TVector3 sigma2ToLine = TVector3(0, 0, 0); for (size_t i = 0; i < track->GetVolumeHits()->GetNumberOfHits(); i++) { TVector3 hitPos = track->GetVolumeHits()->GetPosition(i); auto hitEnergy = track->GetVolumeHits()->GetEnergy(i); size_t closestNodeIndex = lineVolHits->GetClosestHit(hitPos); // find second closes node - size_t secondClosestNodeIndex = closestNodeIndex-1; + size_t secondClosestNodeIndex = closestNodeIndex - 1; if (secondClosestNodeIndex < 0) { - secondClosestNodeIndex = closestNodeIndex+1; - } else if (closestNodeIndex == lineVolHits->GetNumberOfHits()-1){ - secondClosestNodeIndex = closestNodeIndex-1; + secondClosestNodeIndex = closestNodeIndex + 1; + } else if (closestNodeIndex == lineVolHits->GetNumberOfHits() - 1) { + secondClosestNodeIndex = closestNodeIndex - 1; } else { auto dist1 = (lineVolHits->GetPosition(secondClosestNodeIndex) - hitPos).Mag(); - auto dist2 = (lineVolHits->GetPosition(closestNodeIndex+1) - hitPos).Mag(); - if (dist1 > dist2){ - secondClosestNodeIndex = closestNodeIndex+1; + auto dist2 = (lineVolHits->GetPosition(closestNodeIndex + 1) - hitPos).Mag(); + if (dist1 > dist2) { + secondClosestNodeIndex = closestNodeIndex + 1; } } - TVector3 lineDirector = lineVolHits->GetPosition(closestNodeIndex) - lineVolHits->GetPosition(secondClosestNodeIndex); + TVector3 lineDirector = + lineVolHits->GetPosition(closestNodeIndex) - lineVolHits->GetPosition(secondClosestNodeIndex); TVector3 hitToClosestLinePoint = hitPos - lineVolHits->GetPosition(closestNodeIndex); - TVector3 hitToLine = hitToClosestLinePoint - (hitToClosestLinePoint.Dot(lineDirector.Unit()))*lineDirector.Unit(); + TVector3 hitToLine = + hitToClosestLinePoint - (hitToClosestLinePoint.Dot(lineDirector.Unit())) * lineDirector.Unit(); - double toAddX = hitToLine.X()*hitToLine.X(); - double toAddY = hitToLine.Y()*hitToLine.Y(); - double toAddZ = hitToLine.Z()*hitToLine.Z(); - if (ponderateByEnergy){ + double toAddX = hitToLine.X() * hitToLine.X(); + double toAddY = hitToLine.Y() * hitToLine.Y(); + double toAddZ = hitToLine.Z() * hitToLine.Z(); + if (ponderateByEnergy) { toAddX *= hitEnergy; toAddY *= hitEnergy; toAddZ *= hitEnergy; @@ -288,13 +293,13 @@ TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestT sigma2ToLine += TVector3(toAddX, toAddY, toAddZ); } - - sigma2ToLine = TVector3(TMath::Sqrt(sigma2ToLine.X()), TMath::Sqrt(sigma2ToLine.Y()), TMath::Sqrt(sigma2ToLine.Z())); - if (ponderateByEnergy){ + sigma2ToLine = + TVector3(TMath::Sqrt(sigma2ToLine.X()), TMath::Sqrt(sigma2ToLine.Y()), TMath::Sqrt(sigma2ToLine.Z())); + if (ponderateByEnergy) { auto trackEnergy = track->GetEnergy(); - sigma2ToLine *= 1.0/trackEnergy; + sigma2ToLine *= 1.0 / trackEnergy; } else { - sigma2ToLine *= 1.0/track->GetVolumeHits()->GetNumberOfHits(); + sigma2ToLine *= 1.0 / track->GetVolumeHits()->GetNumberOfHits(); } return sigma2ToLine; -} \ No newline at end of file +} From 52b6b688f5077787aaa5f75aa691b791f5e57a80 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 2 Mar 2025 14:27:14 +0100 Subject: [PATCH 4/8] fix computation of sigmas --- src/TRestTrackLineAnalysisProcess.cxx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 0e092f2..72b0c60 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -233,8 +233,7 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID " << tckY->GetTrackID() << RESTendl; auto sigmaYZ = GetSigmaToLine(originalTrackY, tckY, true); - auto meanSigmaZ = (sigmaXZ.Z() + sigmaYZ.Z()) * 0.5; - + auto meanSigmaZ = TMath::Sqrt((sigmaXZ.Z() * sigmaXZ.Z() + sigmaYZ.Z() * sigmaYZ.Z()) * 0.5); double totalSigma = TMath::Sqrt(sigmaXZ.X() * sigmaXZ.X() + sigmaYZ.Y() * sigmaYZ.Y() + meanSigmaZ * meanSigmaZ); @@ -293,13 +292,13 @@ TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestT sigma2ToLine += TVector3(toAddX, toAddY, toAddZ); } - sigma2ToLine = - TVector3(TMath::Sqrt(sigma2ToLine.X()), TMath::Sqrt(sigma2ToLine.Y()), TMath::Sqrt(sigma2ToLine.Z())); if (ponderateByEnergy) { auto trackEnergy = track->GetEnergy(); sigma2ToLine *= 1.0 / trackEnergy; } else { sigma2ToLine *= 1.0 / track->GetVolumeHits()->GetNumberOfHits(); } - return sigma2ToLine; + TVector3 sigmaToLine = + TVector3(TMath::Sqrt(sigma2ToLine.X()), TMath::Sqrt(sigma2ToLine.Y()), TMath::Sqrt(sigma2ToLine.Z())); + return sigmaToLine; } From 953c049daf81e77823ce81642c9ce81e5182a0b4 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 2 Mar 2025 14:27:58 +0100 Subject: [PATCH 5/8] improve observable names --- src/TRestTrackLineAnalysisProcess.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 72b0c60..34d65b0 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -240,8 +240,10 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) SetObservableValue("sigmaX", sigmaXZ.X()); SetObservableValue("sigmaY", sigmaYZ.Y()); SetObservableValue("sigmaZ", meanSigmaZ); - SetObservableValue("sigmaZX", sigmaXZ.Z()); - SetObservableValue("sigmaZY", sigmaYZ.Z()); + SetObservableValue("sigmaXZ", sigmaXZ.Mag()); + SetObservableValue("sigmaYZ", sigmaYZ.Mag()); + SetObservableValue("sigmaZ_XZ", sigmaXZ.Z()); + SetObservableValue("sigmaZ_YZ", sigmaYZ.Z()); SetObservableValue("sigma", totalSigma); return fOutTrackEvent; From aa67cb726e7c21c023ebdcc3e337fb31954cfd86 Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 2 Mar 2025 14:28:32 +0100 Subject: [PATCH 6/8] add some documentation --- src/TRestTrackLineAnalysisProcess.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 34d65b0..95a318a 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -255,6 +255,18 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) /// void TRestTrackLineAnalysisProcess::EndProcess() {} +/////////////////////////////////////////////// +/// \brief Function to calculate the sigma of the distances of the hits to the line +/// defined by the line track. The sigma is calculated as the standard deviation of the +/// distances of the hits to the line. The line is defined by the two closest nodes to the +/// hit. The sigma can be ponderated by the energy of the hit or not. This function works +/// for any type of track (XZ, YZ or XYZ). +/// TODO: should this function be in TRestVolumeHits ? +/// \param track The track containing the hits to calculate the sigma +/// \param line The nodes that define the line. +/// \param ponderateByEnergy If true, the sigma is ponderated by the energy of the hit +/// \return The sigma of the distances of the hits to the line +/// TVector3 TRestTrackLineAnalysisProcess::GetSigmaToLine(TRestTrack* track, TRestTrack* line, bool ponderateByEnergy) { TRestVolumeHits* lineVolHits = line->GetVolumeHits(); From cd09994de60958756c8fba01b0b278fd6c01a38a Mon Sep 17 00:00:00 2001 From: Alvaro Ezquerro Date: Sun, 2 Mar 2025 14:29:47 +0100 Subject: [PATCH 7/8] add energy weighted and no weighted observables --- src/TRestTrackLineAnalysisProcess.cxx | 32 ++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 95a318a..8240c46 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -215,28 +215,44 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) fOutTrackEvent->SetLevels(); + // Get the track which contains the hits from where the line track was obtained + // for the XZ projection auto originalTrackX = fOutTrackEvent->GetTrackById(tckX->GetParentID()); while (fOutTrackEvent->GetLevelById(originalTrackX->GetTrackID()) > 1) { originalTrackX = fOutTrackEvent->GetTrackById(originalTrackX->GetParentID()); } - if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Debug) { - fOutTrackEvent->PrintEvent(); - } - RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID " - << tckX->GetTrackID() << RESTendl; - auto sigmaXZ = GetSigmaToLine(originalTrackX, tckX, true); - + // for the YZ projection auto originalTrackY = fOutTrackEvent->GetTrackById(tckY->GetParentID()); while (fOutTrackEvent->GetLevelById(originalTrackY->GetTrackID()) > 1) { originalTrackY = fOutTrackEvent->GetTrackById(originalTrackY->GetParentID()); } - RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID " + if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) { + fOutTrackEvent->PrintEvent(); + } + RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID: " + << tckX->GetTrackID() << RESTendl; + RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID: " << tckY->GetTrackID() << RESTendl; + + auto sigmaXZ = GetSigmaToLine(originalTrackX, tckX, true); auto sigmaYZ = GetSigmaToLine(originalTrackY, tckY, true); auto meanSigmaZ = TMath::Sqrt((sigmaXZ.Z() * sigmaXZ.Z() + sigmaYZ.Z() * sigmaYZ.Z()) * 0.5); double totalSigma = TMath::Sqrt(sigmaXZ.X() * sigmaXZ.X() + sigmaYZ.Y() * sigmaYZ.Y() + meanSigmaZ * meanSigmaZ); + SetObservableValue("energySigmaX", sigmaXZ.X()); + SetObservableValue("energySigmaY", sigmaYZ.Y()); + SetObservableValue("energySigmaZ", meanSigmaZ); + SetObservableValue("energySigmaXZ", sigmaXZ.Mag()); + SetObservableValue("energySigmaYZ", sigmaYZ.Mag()); + SetObservableValue("energySigmaZ_XZ", sigmaXZ.Z()); + SetObservableValue("energySigmaZ_YZ", sigmaYZ.Z()); + SetObservableValue("energySigma", totalSigma); + + sigmaXZ = GetSigmaToLine(originalTrackX, tckX, false); + sigmaYZ = GetSigmaToLine(originalTrackY, tckY, false); + meanSigmaZ = TMath::Sqrt((sigmaXZ.Z() * sigmaXZ.Z() + sigmaYZ.Z() * sigmaYZ.Z()) * 0.5); + totalSigma = TMath::Sqrt(sigmaXZ.X() * sigmaXZ.X() + sigmaYZ.Y() * sigmaYZ.Y() + meanSigmaZ * meanSigmaZ); SetObservableValue("sigmaX", sigmaXZ.X()); SetObservableValue("sigmaY", sigmaYZ.Y()); SetObservableValue("sigmaZ", meanSigmaZ); From 80bc7eb78249befdc275d0cf57e7056fa1c5319e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 13:30:16 +0000 Subject: [PATCH 8/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/TRestTrackLineAnalysisProcess.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/TRestTrackLineAnalysisProcess.cxx b/src/TRestTrackLineAnalysisProcess.cxx index 8240c46..400fe76 100644 --- a/src/TRestTrackLineAnalysisProcess.cxx +++ b/src/TRestTrackLineAnalysisProcess.cxx @@ -229,11 +229,11 @@ TRestEvent* TRestTrackLineAnalysisProcess::ProcessEvent(TRestEvent* inputEvent) if (GetVerboseLevel() >= TRestStringOutput::REST_Verbose_Level::REST_Extreme) { fOutTrackEvent->PrintEvent(); } - RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() << "; line track ID: " - << tckX->GetTrackID() << RESTendl; - RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() << "; line track ID: " - << tckY->GetTrackID() << RESTendl; - + RESTDebug << "Original track X ID: " << originalTrackX->GetTrackID() + << "; line track ID: " << tckX->GetTrackID() << RESTendl; + RESTDebug << "Original track Y ID: " << originalTrackY->GetTrackID() + << "; line track ID: " << tckY->GetTrackID() << RESTendl; + auto sigmaXZ = GetSigmaToLine(originalTrackX, tckX, true); auto sigmaYZ = GetSigmaToLine(originalTrackY, tckY, true); auto meanSigmaZ = TMath::Sqrt((sigmaXZ.Z() * sigmaXZ.Z() + sigmaYZ.Z() * sigmaYZ.Z()) * 0.5);