diff --git a/config/TMS_Default_Config.toml b/config/TMS_Default_Config.toml index 0fc6796e..2eb1bd05 100644 --- a/config/TMS_Default_Config.toml +++ b/config/TMS_Default_Config.toml @@ -76,6 +76,8 @@ TiltAngle = 19.0811366877 #tan(90-3=87) # Y difference for expectation of reconstruction from UV and from X hit [mm] YDifference = 300.0 + # Distance from start to calculate track direction for [Number of planes]. Track matching done in plane pairs -> do not set to 1 + DirectionDistance = 10 [Recon.AStar] #CostMetric = "Manhattan" diff --git a/src/TMS_Manager.cpp b/src/TMS_Manager.cpp index e9346035..3224dda3 100644 --- a/src/TMS_Manager.cpp +++ b/src/TMS_Manager.cpp @@ -57,6 +57,7 @@ TMS_Manager::TMS_Manager() { _RECO_TRACKMATCH_YAnchor = toml::find(data, "Recon", "TrackMatch3D", "YAnchor"); _RECO_TRACKMATCH_TiltAngle = toml::find(data, "Recon", "TrackMatch3D", "TiltAngle"); _RECO_TRACKMATCH_YDifference = toml::find(data, "Recon", "TrackMatch3D", "YDifference"); + _RECO_TRACKMATCH_DirectionDistance = toml::find(data, "Recon", "TrackMatch3D", "DirectionDistance"); _RECO_ASTAR_IsGreedy = toml::find (data, "Recon", "AStar", "IsGreedy"); _RECO_ASTAR_CostMetric = toml::find (data, "Recon", "AStar", "CostMetric"); diff --git a/src/TMS_Manager.h b/src/TMS_Manager.h index 9b013f6f..1ced3388 100644 --- a/src/TMS_Manager.h +++ b/src/TMS_Manager.h @@ -51,6 +51,7 @@ class TMS_Manager { float Get_Reco_TRACKMATCH_YAnchor() { return _RECO_TRACKMATCH_YAnchor; }; double Get_Reco_TRACKMATCH_TiltAngle() { return _RECO_TRACKMATCH_TiltAngle; }; float Get_Reco_TRACKMATCH_YDifference() { return _RECO_TRACKMATCH_YDifference; }; + int Get_Reco_TRACKMATCH_DirectionDistance() { return _RECO_TRACKMATCH_DirectionDistance; }; bool Get_Reco_ASTAR_IsGreedy() { return _RECO_ASTAR_IsGreedy; }; std::string Get_Reco_ASTAR_CostMetric() { return _RECO_ASTAR_CostMetric; }; @@ -118,6 +119,7 @@ class TMS_Manager { float _RECO_TRACKMATCH_YAnchor; double _RECO_TRACKMATCH_TiltAngle; float _RECO_TRACKMATCH_YDifference; + int _RECO_TRACKMATCH_DirectionDistance; bool _RECO_ASTAR_IsGreedy; std::string _RECO_ASTAR_CostMetric; diff --git a/src/TMS_Reco.cpp b/src/TMS_Reco.cpp index 2216fccc..f66df15a 100644 --- a/src/TMS_Reco.cpp +++ b/src/TMS_Reco.cpp @@ -1247,6 +1247,9 @@ std::vector TMS_TrackFinder::TrackMatching3D() { #endif } } + // Sort track + SpatialPrio(aTrack.Hits); + // Track Length aTrack.Length = CalculateTrackLength3D(aTrack); #ifdef DEBUG @@ -1258,9 +1261,9 @@ std::vector TMS_TrackFinder::TrackMatching3D() { std::cout << "Added TrackEnergyDeposit: " << aTrack.EnergyDeposit << std::endl; #endif // Track Direction - aTrack.Direction[0] = aTrack.End[0] - aTrack.Start[0]; - aTrack.Direction[1] = aTrack.End[1] - aTrack.Start[1]; - aTrack.Direction[2] = aTrack.End[2] - aTrack.Start[2]; + aTrack.Direction[0] = aTrack.Start[0] - aTrack.Hits[TMS_Manager::GetInstance().Get_Reco_TRACKMATCH_DirectionDistance()].GetRecoX(); //aTrack.End[0] - aTrack.Start[0]; + aTrack.Direction[1] = aTrack.Start[1] - aTrack.Hits[TMS_Manager::GetInstance().Get_Reco_TRACKMATCH_DirectionDistance()].GetRecoY(); //aTrack.End[1] - aTrack.Start[1]; + aTrack.Direction[2] = aTrack.Start[2] - aTrack.Hits[TMS_Manager::GetInstance().Get_Reco_TRACKMATCH_DirectionDistance()].GetZ(); //aTrack.End[2] - aTrack.Start[2]; #ifdef DEBUG std::cout << "Start: " << aTrack.Start[0] << " | " << aTrack.Start[1] << " | " << aTrack.Start[2] << std::endl; std::cout << "End: " << aTrack.End[0] << " | " << aTrack.End[1] << " | " << aTrack.End[2] << std::endl;