mirror of
https://github.com/gwm17/Specter.git
synced 2024-11-22 18:28:52 -05:00
Major overhaul of the Physics side. Isolate CAEN classes, create NavData. Re-name HitSort to PhysicsEventBuilder.
This commit is contained in:
parent
e9700170e7
commit
6dd5f7f1c6
|
@ -83,7 +83,7 @@ namespace Navigator {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImPlot::IsPlotSelected()) {
|
if (ImPlot::IsPlotSelected()) {
|
||||||
auto& select = ImPlot::GetPlotSelection();
|
auto select = ImPlot::GetPlotSelection();
|
||||||
if (ImGui::IsMouseClicked(ImPlot::GetInputMap().SelectCancel)) {
|
if (ImGui::IsMouseClicked(ImPlot::GetInputMap().SelectCancel)) {
|
||||||
ImPlot::CancelPlotSelection();
|
ImPlot::CancelPlotSelection();
|
||||||
m_integralRegions.emplace_back(select, "integralRegion_"+std::to_string(m_nRegions), m_zoomedGram.name);
|
m_integralRegions.emplace_back(select, "integralRegion_"+std::to_string(m_nRegions), m_zoomedGram.name);
|
||||||
|
@ -92,7 +92,7 @@ namespace Navigator {
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < m_integralRegions.size(); i++)
|
for (size_t i = 0; i < m_integralRegions.size(); i++)
|
||||||
{
|
{
|
||||||
auto region = m_integralRegions[i];
|
auto& region = m_integralRegions[i];
|
||||||
if (m_zoomedGram.name == region.histogram_name)
|
if (m_zoomedGram.name == region.histogram_name)
|
||||||
{
|
{
|
||||||
ImPlot::DragRect(int(i), ®ion.region.X.Min, ®ion.region.Y.Min, ®ion.region.X.Max, ®ion.region.Y.Max, ImVec4(1, 0, 1, 1));
|
ImPlot::DragRect(int(i), ®ion.region.X.Min, ®ion.region.Y.Min, ®ion.region.X.Max, ®ion.region.Y.Max, ImVec4(1, 0, 1, 1));
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace Navigator {
|
||||||
|
|
||||||
//io.Fonts->AddFontDefault();
|
//io.Fonts->AddFontDefault();
|
||||||
ImFontConfig latin_config;
|
ImFontConfig latin_config;
|
||||||
latin_config.RasterizerMultiply = 1.3;
|
latin_config.RasterizerMultiply = 1.3f;
|
||||||
ImFontConfig config;
|
ImFontConfig config;
|
||||||
config.MergeMode = true;
|
config.MergeMode = true;
|
||||||
//config.GlyphMinAdvanceX = 13.0f; // Use if you want to make the icon monospaced
|
//config.GlyphMinAdvanceX = 13.0f; // Use if you want to make the icon monospaced
|
||||||
|
|
|
@ -3,19 +3,17 @@
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
#include "Navigator/ParameterMap.h"
|
#include "Navigator/ParameterMap.h"
|
||||||
#include "CompassHit.h"
|
#include "NavData.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
class NAV_API AnalysisStage
|
class NAV_API AnalysisStage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using RawPhysicsEvent = std::vector<CompassHit>;
|
|
||||||
|
|
||||||
AnalysisStage(const std::string& name="AnalysisStage");
|
AnalysisStage(const std::string& name="AnalysisStage");
|
||||||
virtual ~AnalysisStage();
|
virtual ~AnalysisStage();
|
||||||
|
|
||||||
virtual void AnalyzeRawPhysicsEvent(const RawPhysicsEvent& event) {};
|
virtual void AnalyzePhysicsEvent(const NavEvent& event) {};
|
||||||
|
|
||||||
inline std::string GetName() { return m_name; }
|
inline std::string GetName() { return m_name; }
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
#include "CompassHit.h"
|
#include "CompassHit.h"
|
||||||
#include "ShiftMap.h"
|
#include "Navigator/Physics/ShiftMap.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
|
@ -30,13 +30,13 @@ namespace Navigator {
|
||||||
m_validFlag = true;
|
m_validFlag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CompassHit& CompassOnlineSource::GetData()
|
const NavData& CompassOnlineSource::GetData()
|
||||||
{
|
{
|
||||||
if (!IsValid())
|
if (!IsValid())
|
||||||
{
|
{
|
||||||
NAV_ERROR("Attempting to access invalid source at CompassOnlineSource!");
|
NAV_ERROR("Attempting to access invalid source at CompassOnlineSource!");
|
||||||
m_currentHit = CompassHit();
|
m_datum = NavData();
|
||||||
return m_currentHit;
|
return m_datum;
|
||||||
}
|
}
|
||||||
else if (m_bufferIter == nullptr || m_bufferIter == m_bufferEnd)
|
else if (m_bufferIter == nullptr || m_bufferIter == m_bufferEnd)
|
||||||
{
|
{
|
||||||
|
@ -44,15 +44,19 @@ namespace Navigator {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_bufferIter != m_bufferEnd)
|
if (m_bufferIter != m_bufferEnd)
|
||||||
{
|
|
||||||
GetHit();
|
GetHit();
|
||||||
return m_currentHit;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_currentHit = CompassHit();
|
m_datum = NavData();
|
||||||
return m_currentHit;
|
return m_datum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_datum.longEnergy = m_currentHit.lgate;
|
||||||
|
m_datum.shortEnergy = m_currentHit.sgate;
|
||||||
|
m_datum.timestamp = m_currentHit.timestamp;
|
||||||
|
m_datum.id = m_currentHit.board * 16 + m_currentHit.channel;
|
||||||
|
|
||||||
|
return m_datum;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompassOnlineSource::FillBuffer()
|
void CompassOnlineSource::FillBuffer()
|
|
@ -1,7 +1,8 @@
|
||||||
#ifndef COMPASS_ONLINE_SOURCE_H
|
#ifndef COMPASS_ONLINE_SOURCE_H
|
||||||
#define COMPASS_ONLINE_SOURCE_H
|
#define COMPASS_ONLINE_SOURCE_H
|
||||||
|
|
||||||
#include "DataSource.h"
|
#include "Navigator/Physics/DataSource.h"
|
||||||
|
#include "CompassHit.h"
|
||||||
#include "asio.hpp"
|
#include "asio.hpp"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
@ -12,7 +13,7 @@ namespace Navigator {
|
||||||
CompassOnlineSource(const std::string& hostname, const std::string& port);
|
CompassOnlineSource(const std::string& hostname, const std::string& port);
|
||||||
virtual ~CompassOnlineSource() override;
|
virtual ~CompassOnlineSource() override;
|
||||||
|
|
||||||
virtual const CompassHit& GetData() override;
|
virtual const NavData& GetData() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitSocket(const std::string& hostname, const std::string& port);
|
void InitSocket(const std::string& hostname, const std::string& port);
|
|
@ -73,6 +73,7 @@ namespace Navigator {
|
||||||
m_validFlag = true;
|
m_validFlag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
GetHitsFromFiles() is the function which actually retrieves and sorts the data from the individual
|
GetHitsFromFiles() is the function which actually retrieves and sorts the data from the individual
|
||||||
files. There are several tricks which allow this to happen. First is that, after sorting, it is impossible
|
files. There are several tricks which allow this to happen. First is that, after sorting, it is impossible
|
||||||
|
@ -114,22 +115,29 @@ namespace Navigator {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CompassHit& CompassRun::GetData()
|
const NavData& CompassRun::GetData()
|
||||||
{
|
{
|
||||||
if(!IsValid())
|
if(!IsValid())
|
||||||
{
|
{
|
||||||
NAV_ERROR("Trying to access CompassRun data when invalid, bug detected!");
|
NAV_ERROR("Trying to access CompassRun data when invalid, bug detected!");
|
||||||
m_hit = CompassHit();
|
m_datum = NavData();
|
||||||
return m_hit;
|
return m_datum;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetHitsFromFiles())
|
if (!GetHitsFromFiles())
|
||||||
return m_hit;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
m_validFlag = false;
|
m_validFlag = false;
|
||||||
return m_hit;
|
m_datum = NavData();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_datum.longEnergy = m_hit.lgate;
|
||||||
|
m_datum.shortEnergy = m_hit.sgate;
|
||||||
|
m_datum.timestamp = m_hit.timestamp;
|
||||||
|
m_datum.id = m_hit.board * 16 + m_hit.channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_datum;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -11,9 +11,9 @@
|
||||||
#define COMPASSRUN_H
|
#define COMPASSRUN_H
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
#include "DataSource.h"
|
#include "Navigator/Physics/DataSource.h"
|
||||||
#include "CompassFile.h"
|
#include "CompassFile.h"
|
||||||
#include "ShiftMap.h"
|
#include "Navigator/Physics/ShiftMap.h"
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
@ -25,7 +25,7 @@ namespace Navigator {
|
||||||
CompassRun();
|
CompassRun();
|
||||||
CompassRun(const std::string& dir);
|
CompassRun(const std::string& dir);
|
||||||
virtual ~CompassRun();
|
virtual ~CompassRun();
|
||||||
virtual const CompassHit& GetData() override;
|
virtual const NavData& GetData() override;
|
||||||
inline void SetDirectory(const std::string& dir) { m_directory = dir; CollectFiles(); }
|
inline void SetDirectory(const std::string& dir) { m_directory = dir; CollectFiles(); }
|
||||||
inline void SetShiftMap(const std::string& filename) { m_smap.SetFile(filename); }
|
inline void SetShiftMap(const std::string& filename) { m_smap.SetFile(filename); }
|
||||||
|
|
||||||
|
@ -36,8 +36,10 @@ namespace Navigator {
|
||||||
|
|
||||||
std::filesystem::path m_directory;
|
std::filesystem::path m_directory;
|
||||||
const std::string m_extension = ".bin";
|
const std::string m_extension = ".bin";
|
||||||
|
|
||||||
std::vector<CompassFile> m_datafiles;
|
std::vector<CompassFile> m_datafiles;
|
||||||
unsigned int startIndex; //this is the file we start looking at; increases as we finish files.
|
unsigned int startIndex; //this is the file we start looking at; increases as we finish files.
|
||||||
|
|
||||||
ShiftMap m_smap;
|
ShiftMap m_smap;
|
||||||
|
|
||||||
CompassHit m_hit;
|
CompassHit m_hit;
|
|
@ -1,6 +1,6 @@
|
||||||
#include "DataSource.h"
|
#include "DataSource.h"
|
||||||
#include "CompassRun.h"
|
#include "Caen/CompassRun.h"
|
||||||
#include "CompassOnlineSource.h"
|
#include "Caen/CompassOnlineSource.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
#define DATA_SOURCE_H
|
#define DATA_SOURCE_H
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
#include "CompassHit.h"
|
#include "NavData.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
class NAV_API DataSource
|
class NAV_API DataSource
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -22,11 +22,12 @@ namespace Navigator {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~DataSource() {};
|
virtual ~DataSource() {};
|
||||||
virtual const CompassHit& GetData() = 0;
|
virtual const NavData& GetData() = 0;
|
||||||
inline bool IsValid() { return m_validFlag; }
|
inline bool IsValid() { return m_validFlag; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_validFlag;
|
bool m_validFlag;
|
||||||
|
NavData m_datum;
|
||||||
};
|
};
|
||||||
|
|
||||||
NAV_API DataSource* CreateDataSource(const std::string& loc, const std::string& port, DataSource::SourceType type);
|
NAV_API DataSource* CreateDataSource(const std::string& loc, const std::string& port, DataSource::SourceType type);
|
||||||
|
|
18
Navigator/src/Navigator/Physics/NavData.h
Normal file
18
Navigator/src/Navigator/Physics/NavData.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef NAVDATA_H
|
||||||
|
#define NAVDATA_H
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
struct NavData
|
||||||
|
{
|
||||||
|
uint32_t longEnergy;
|
||||||
|
uint32_t shortEnergy;
|
||||||
|
uint64_t timestamp;
|
||||||
|
uint32_t id;
|
||||||
|
};
|
||||||
|
|
||||||
|
using NavEvent = std::vector<NavData>;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
42
Navigator/src/Navigator/Physics/PhysicsEventBuilder.cpp
Normal file
42
Navigator/src/Navigator/Physics/PhysicsEventBuilder.cpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include "PhysicsEventBuilder.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
PhysicsEventBuilder::PhysicsEventBuilder(uint64_t windowSize) :
|
||||||
|
m_coincWindow(windowSize), m_eventStartTime(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicsEventBuilder::~PhysicsEventBuilder()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PhysicsEventBuilder::AddDatumToEvent(const NavData& datum)
|
||||||
|
{
|
||||||
|
if (m_eventStartTime == 0)
|
||||||
|
{
|
||||||
|
m_eventStartTime = datum.timestamp;
|
||||||
|
m_event.push_back(datum);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (datum.timestamp - m_eventStartTime < m_coincWindow)
|
||||||
|
{
|
||||||
|
m_event.push_back(datum);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_readyEvent = m_event;
|
||||||
|
m_event.clear();
|
||||||
|
m_eventStartTime = datum.timestamp;
|
||||||
|
m_event.push_back(datum);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const NavEvent& PhysicsEventBuilder::GetReadyEvent() const
|
||||||
|
{
|
||||||
|
return m_readyEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
26
Navigator/src/Navigator/Physics/PhysicsEventBuilder.h
Normal file
26
Navigator/src/Navigator/Physics/PhysicsEventBuilder.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef PHYSICS_EVENT_BUILDER_H
|
||||||
|
#define PHYSICS_EVENT_BUILDER_H
|
||||||
|
|
||||||
|
#include "NavData.h"
|
||||||
|
|
||||||
|
namespace Navigator {
|
||||||
|
|
||||||
|
class NAV_API PhysicsEventBuilder
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PhysicsEventBuilder(uint64_t windowSize);
|
||||||
|
~PhysicsEventBuilder();
|
||||||
|
inline void SetCoincidenceWindow(uint64_t windowSize) { m_coincWindow = windowSize; }
|
||||||
|
bool AddDatumToEvent(const NavData& datum);
|
||||||
|
const NavEvent& GetReadyEvent() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
NavEvent m_event;
|
||||||
|
NavEvent m_readyEvent;
|
||||||
|
uint64_t m_coincWindow;
|
||||||
|
uint64_t m_eventStartTime;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,31 +0,0 @@
|
||||||
#include "PhysicsHitSort.h"
|
|
||||||
|
|
||||||
namespace Navigator {
|
|
||||||
|
|
||||||
PhysicsHitSort::PhysicsHitSort(uint64_t window) :
|
|
||||||
m_coincidenceWindow(window), m_startTime(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
PhysicsHitSort::~PhysicsHitSort() {}
|
|
||||||
|
|
||||||
|
|
||||||
bool PhysicsHitSort::IsHitInWindow(const CompassHit& hit)
|
|
||||||
{
|
|
||||||
if(m_startTime == 0)
|
|
||||||
return true;
|
|
||||||
else if( (hit.timestamp - m_startTime) < m_coincidenceWindow)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PhysicsHitSort::AddHit(const CompassHit& hit)
|
|
||||||
{
|
|
||||||
if(m_event.size() == 0)
|
|
||||||
m_startTime = hit.timestamp;
|
|
||||||
|
|
||||||
m_event.emplace_back(hit);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
#ifndef PHYSICS_HIT_SORT_H
|
|
||||||
#define PHYSICS_HIT_SORT_H
|
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
|
||||||
#include "CompassHit.h"
|
|
||||||
|
|
||||||
namespace Navigator {
|
|
||||||
|
|
||||||
class NAV_API PhysicsHitSort
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
using RawPhysicsEvent = std::vector<CompassHit>;
|
|
||||||
|
|
||||||
PhysicsHitSort(uint64_t window=1500000);
|
|
||||||
~PhysicsHitSort();
|
|
||||||
|
|
||||||
bool IsHitInWindow(const CompassHit& hit);
|
|
||||||
void AddHit(const CompassHit& hit);
|
|
||||||
|
|
||||||
inline void ClearRawPhysicsEvent() { m_event.clear(); }
|
|
||||||
inline RawPhysicsEvent GetRawPhysicsEvent() { m_startTime = 0; return m_event; }
|
|
||||||
|
|
||||||
inline void SetCoincidenceWindow(uint64_t window) { m_coincidenceWindow = window; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
RawPhysicsEvent m_event;
|
|
||||||
uint64_t m_coincidenceWindow;
|
|
||||||
uint64_t m_startTime;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -2,12 +2,12 @@
|
||||||
#include "Navigator/ParameterMap.h"
|
#include "Navigator/ParameterMap.h"
|
||||||
|
|
||||||
//temp
|
//temp
|
||||||
#include "CompassHit.h"
|
#include "NavData.h"
|
||||||
|
|
||||||
namespace Navigator {
|
namespace Navigator {
|
||||||
|
|
||||||
PhysicsLayer::PhysicsLayer() :
|
PhysicsLayer::PhysicsLayer() :
|
||||||
m_activeFlag(false), m_source(nullptr), m_physThread(nullptr)
|
m_activeFlag(false), m_source(nullptr), m_eventBuilder(0), m_physThread(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,8 +94,8 @@ namespace Navigator {
|
||||||
void PhysicsLayer::AttachDataSource(PhysicsStartEvent& event)
|
void PhysicsLayer::AttachDataSource(PhysicsStartEvent& event)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(m_sourceMutex);
|
std::lock_guard<std::mutex> guard(m_sourceMutex);
|
||||||
m_rawSort.SetCoincidenceWindow(event.GetCoincidenceWindow());
|
|
||||||
m_source.reset(CreateDataSource(event.GetSourceLocation(), event.GetSourcePort(), event.GetSourceType()));
|
m_source.reset(CreateDataSource(event.GetSourceLocation(), event.GetSourcePort(), event.GetSourceType()));
|
||||||
|
m_eventBuilder.SetCoincidenceWindow(event.GetCoincidenceWindow());
|
||||||
if (m_source->IsValid())
|
if (m_source->IsValid())
|
||||||
{
|
{
|
||||||
NAV_INFO("Attach successful. Enabling data pull...");
|
NAV_INFO("Attach successful. Enabling data pull...");
|
||||||
|
@ -121,8 +121,8 @@ namespace Navigator {
|
||||||
{
|
{
|
||||||
HistogramMap& histMap = HistogramMap::GetInstance();
|
HistogramMap& histMap = HistogramMap::GetInstance();
|
||||||
|
|
||||||
CompassHit hit;
|
NavEvent event;
|
||||||
|
NavData datum;
|
||||||
while(m_activeFlag)
|
while(m_activeFlag)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
@ -137,7 +137,7 @@ namespace Navigator {
|
||||||
Looks funny, but two conditions lead to !IsValid(). Either source prev. shutdown,
|
Looks funny, but two conditions lead to !IsValid(). Either source prev. shutdown,
|
||||||
OR we reached end of source, indicated after prev. data grab
|
OR we reached end of source, indicated after prev. data grab
|
||||||
*/
|
*/
|
||||||
hit = m_source->GetData();
|
datum = m_source->GetData();
|
||||||
if(!m_source->IsValid())
|
if(!m_source->IsValid())
|
||||||
{
|
{
|
||||||
NAV_INFO("End of data source.");
|
NAV_INFO("End of data source.");
|
||||||
|
@ -145,26 +145,19 @@ namespace Navigator {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//NAV_INFO("Doing a physics");
|
//NAV_INFO("Doing a physics");
|
||||||
if(m_rawSort.IsHitInWindow(hit))
|
|
||||||
|
if (m_eventBuilder.AddDatumToEvent(datum))
|
||||||
{
|
{
|
||||||
//NAV_INFO("Adding hit to event with timestamp {0}", hit.timestamp);
|
event = m_eventBuilder.GetReadyEvent();
|
||||||
m_rawSort.AddHit(hit);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//NAV_INFO("Obtaining built event...");
|
|
||||||
auto event = m_rawSort.GetRawPhysicsEvent();
|
|
||||||
//NAV_INFO("Built event size: {0}", event.size());
|
//NAV_INFO("Built event size: {0}", event.size());
|
||||||
for (auto& stage : m_physStack)
|
for (auto& stage : m_physStack)
|
||||||
stage->AnalyzeRawPhysicsEvent(event);
|
stage->AnalyzePhysicsEvent(event);
|
||||||
|
|
||||||
histMap.UpdateHistograms();
|
histMap.UpdateHistograms();
|
||||||
|
|
||||||
//Cleanup to be ready for next event
|
//Cleanup to be ready for next event
|
||||||
ParameterMap::GetInstance().InvalidateParameters();
|
ParameterMap::GetInstance().InvalidateParameters();
|
||||||
m_rawSort.ClearRawPhysicsEvent();
|
|
||||||
//Need to add hit in hand, start new event
|
|
||||||
m_rawSort.AddHit(hit);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef PHYSICS_EVENT_BUILDER_H
|
#ifndef PHYSICS_LAYER_H
|
||||||
#define PHYSICS_EVENT_BUILDER_H
|
#define PHYSICS_LAYER_H
|
||||||
|
|
||||||
#include "Navigator/NavCore.h"
|
#include "Navigator/NavCore.h"
|
||||||
#include "Navigator/HistogramMap.h"
|
#include "Navigator/HistogramMap.h"
|
||||||
|
@ -7,8 +7,8 @@
|
||||||
#include "Navigator/Events/PhysicsEvent.h"
|
#include "Navigator/Events/PhysicsEvent.h"
|
||||||
#include "AnalysisStack.h"
|
#include "AnalysisStack.h"
|
||||||
#include "AnalysisStage.h"
|
#include "AnalysisStage.h"
|
||||||
#include "PhysicsHitSort.h"
|
|
||||||
#include "DataSource.h"
|
#include "DataSource.h"
|
||||||
|
#include "PhysicsEventBuilder.h"
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
@ -42,11 +42,11 @@ namespace Navigator {
|
||||||
|
|
||||||
AnalysisStack m_physStack;
|
AnalysisStack m_physStack;
|
||||||
std::atomic<bool> m_activeFlag;
|
std::atomic<bool> m_activeFlag;
|
||||||
PhysicsHitSort m_rawSort;
|
|
||||||
|
|
||||||
std::mutex m_sourceMutex;
|
std::mutex m_sourceMutex;
|
||||||
|
|
||||||
std::unique_ptr<DataSource> m_source;
|
std::unique_ptr<DataSource> m_source;
|
||||||
|
PhysicsEventBuilder m_eventBuilder;
|
||||||
|
|
||||||
std::thread* m_physThread;
|
std::thread* m_physThread;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user