1
0
Fork 0
mirror of https://github.com/gwm17/Specter.git synced 2024-11-23 02:38:52 -05:00

Initial developement of Application, Logger, etc. Setup premake file

This commit is contained in:
Gordon McCann 2021-12-18 19:23:14 -05:00
parent 3584a255ee
commit 4c0d959ee7
24 changed files with 549 additions and 503 deletions

2
.gitignore vendored
View File

@ -2,5 +2,7 @@
*.so *.so
*.a *.a
*.sublime-workspace *.sublime-workspace
Makefile
*.make
!.gitignore !.gitignore

View File

@ -0,0 +1,129 @@
bin-int/Debug-linux-x86_64/NavProject/main.o: src/main.cpp \
src/Navigator.h src/Navigator/Logger.h \
src/vendor/spdlog/include/spdlog/spdlog.h \
src/vendor/spdlog/include/spdlog/common.h \
src/vendor/spdlog/include/spdlog/tweakme.h \
src/vendor/spdlog/include/spdlog/details/null_mutex.h \
src/vendor/spdlog/include/spdlog/fmt/fmt.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format-inl.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h \
src/vendor/spdlog/include/spdlog/common-inl.h \
src/vendor/spdlog/include/spdlog/details/registry.h \
src/vendor/spdlog/include/spdlog/details/registry-inl.h \
src/vendor/spdlog/include/spdlog/details/periodic_worker.h \
src/vendor/spdlog/include/spdlog/details/periodic_worker-inl.h \
src/vendor/spdlog/include/spdlog/logger.h \
src/vendor/spdlog/include/spdlog/details/log_msg.h \
src/vendor/spdlog/include/spdlog/details/log_msg-inl.h \
src/vendor/spdlog/include/spdlog/details/os.h \
src/vendor/spdlog/include/spdlog/details/os-inl.h \
src/vendor/spdlog/include/spdlog/details/backtracer.h \
src/vendor/spdlog/include/spdlog/details/log_msg_buffer.h \
src/vendor/spdlog/include/spdlog/details/log_msg_buffer-inl.h \
src/vendor/spdlog/include/spdlog/details/circular_q.h \
src/vendor/spdlog/include/spdlog/details/backtracer-inl.h \
src/vendor/spdlog/include/spdlog/logger-inl.h \
src/vendor/spdlog/include/spdlog/sinks/sink.h \
src/vendor/spdlog/include/spdlog/formatter.h \
src/vendor/spdlog/include/spdlog/sinks/sink-inl.h \
src/vendor/spdlog/include/spdlog/pattern_formatter.h \
src/vendor/spdlog/include/spdlog/pattern_formatter-inl.h \
src/vendor/spdlog/include/spdlog/details/fmt_helper.h \
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink.h \
src/vendor/spdlog/include/spdlog/details/console_globals.h \
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h \
src/vendor/spdlog/include/spdlog/version.h \
src/vendor/spdlog/include/spdlog/details/synchronous_factory.h \
src/vendor/spdlog/include/spdlog/spdlog-inl.h \
src/vendor/spdlog/include/spdlog/fmt/ostr.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/ostream.h \
src/Navigator/Application.h
src/Navigator.h:
src/Navigator/Logger.h:
src/vendor/spdlog/include/spdlog/spdlog.h:
src/vendor/spdlog/include/spdlog/common.h:
src/vendor/spdlog/include/spdlog/tweakme.h:
src/vendor/spdlog/include/spdlog/details/null_mutex.h:
src/vendor/spdlog/include/spdlog/fmt/fmt.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format-inl.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h:
src/vendor/spdlog/include/spdlog/common-inl.h:
src/vendor/spdlog/include/spdlog/details/registry.h:
src/vendor/spdlog/include/spdlog/details/registry-inl.h:
src/vendor/spdlog/include/spdlog/details/periodic_worker.h:
src/vendor/spdlog/include/spdlog/details/periodic_worker-inl.h:
src/vendor/spdlog/include/spdlog/logger.h:
src/vendor/spdlog/include/spdlog/details/log_msg.h:
src/vendor/spdlog/include/spdlog/details/log_msg-inl.h:
src/vendor/spdlog/include/spdlog/details/os.h:
src/vendor/spdlog/include/spdlog/details/os-inl.h:
src/vendor/spdlog/include/spdlog/details/backtracer.h:
src/vendor/spdlog/include/spdlog/details/log_msg_buffer.h:
src/vendor/spdlog/include/spdlog/details/log_msg_buffer-inl.h:
src/vendor/spdlog/include/spdlog/details/circular_q.h:
src/vendor/spdlog/include/spdlog/details/backtracer-inl.h:
src/vendor/spdlog/include/spdlog/logger-inl.h:
src/vendor/spdlog/include/spdlog/sinks/sink.h:
src/vendor/spdlog/include/spdlog/formatter.h:
src/vendor/spdlog/include/spdlog/sinks/sink-inl.h:
src/vendor/spdlog/include/spdlog/pattern_formatter.h:
src/vendor/spdlog/include/spdlog/pattern_formatter-inl.h:
src/vendor/spdlog/include/spdlog/details/fmt_helper.h:
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink.h:
src/vendor/spdlog/include/spdlog/details/console_globals.h:
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h:
src/vendor/spdlog/include/spdlog/version.h:
src/vendor/spdlog/include/spdlog/details/synchronous_factory.h:
src/vendor/spdlog/include/spdlog/spdlog-inl.h:
src/vendor/spdlog/include/spdlog/fmt/ostr.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/ostream.h:
src/Navigator/Application.h:

View File

@ -0,0 +1,6 @@
bin-int/Debug-linux-x86_64/Navigator/Application.o: \
src/Navigator/Application.cpp src/navpch.h src/Navigator/Application.h
src/navpch.h:
src/Navigator/Application.h:

View File

@ -0,0 +1,11 @@
bin-int/Debug-linux-x86_64/Navigator/CompassFile.o: \
src/Navigator/CompassFile.cpp src/navpch.h src/Navigator/CompassFile.h \
src/Navigator/CompassHit.h src/Navigator/ShiftMap.h
src/navpch.h:
src/Navigator/CompassFile.h:
src/Navigator/CompassHit.h:
src/Navigator/ShiftMap.h:

View File

@ -0,0 +1,14 @@
bin-int/Debug-linux-x86_64/Navigator/CompassRun.o: \
src/Navigator/CompassRun.cpp src/navpch.h src/Navigator/CompassRun.h \
src/Navigator/CompassFile.h src/Navigator/CompassHit.h \
src/Navigator/ShiftMap.h
src/navpch.h:
src/Navigator/CompassRun.h:
src/Navigator/CompassFile.h:
src/Navigator/CompassHit.h:
src/Navigator/ShiftMap.h:

View File

@ -0,0 +1,12 @@
bin-int/Debug-linux-x86_64/Navigator/Logger.o: src/Navigator/Logger.cpp \
src/navpch.h src/Navigator/Logger.h \
src/vendor/spdlog/include/spdlog/sinks/stdout_color_sinks.h \
src/vendor/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h
src/navpch.h:
src/Navigator/Logger.h:
src/vendor/spdlog/include/spdlog/sinks/stdout_color_sinks.h:
src/vendor/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h:

View File

@ -0,0 +1,6 @@
bin-int/Debug-linux-x86_64/Navigator/ShiftMap.o: \
src/Navigator/ShiftMap.cpp src/navpch.h src/Navigator/ShiftMap.h
src/navpch.h:
src/Navigator/ShiftMap.h:

View File

@ -0,0 +1,123 @@
bin-int/Debug-linux-x86_64/Navigator/navpch.h.gch: src/navpch.h \
src/Navigator/Logger.h src/vendor/spdlog/include/spdlog/spdlog.h \
src/vendor/spdlog/include/spdlog/common.h \
src/vendor/spdlog/include/spdlog/tweakme.h \
src/vendor/spdlog/include/spdlog/details/null_mutex.h \
src/vendor/spdlog/include/spdlog/fmt/fmt.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format-inl.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h \
src/vendor/spdlog/include/spdlog/common-inl.h \
src/vendor/spdlog/include/spdlog/details/registry.h \
src/vendor/spdlog/include/spdlog/details/registry-inl.h \
src/vendor/spdlog/include/spdlog/details/periodic_worker.h \
src/vendor/spdlog/include/spdlog/details/periodic_worker-inl.h \
src/vendor/spdlog/include/spdlog/logger.h \
src/vendor/spdlog/include/spdlog/details/log_msg.h \
src/vendor/spdlog/include/spdlog/details/log_msg-inl.h \
src/vendor/spdlog/include/spdlog/details/os.h \
src/vendor/spdlog/include/spdlog/details/os-inl.h \
src/vendor/spdlog/include/spdlog/details/backtracer.h \
src/vendor/spdlog/include/spdlog/details/log_msg_buffer.h \
src/vendor/spdlog/include/spdlog/details/log_msg_buffer-inl.h \
src/vendor/spdlog/include/spdlog/details/circular_q.h \
src/vendor/spdlog/include/spdlog/details/backtracer-inl.h \
src/vendor/spdlog/include/spdlog/logger-inl.h \
src/vendor/spdlog/include/spdlog/sinks/sink.h \
src/vendor/spdlog/include/spdlog/formatter.h \
src/vendor/spdlog/include/spdlog/sinks/sink-inl.h \
src/vendor/spdlog/include/spdlog/pattern_formatter.h \
src/vendor/spdlog/include/spdlog/pattern_formatter-inl.h \
src/vendor/spdlog/include/spdlog/details/fmt_helper.h \
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink.h \
src/vendor/spdlog/include/spdlog/details/console_globals.h \
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h \
src/vendor/spdlog/include/spdlog/version.h \
src/vendor/spdlog/include/spdlog/details/synchronous_factory.h \
src/vendor/spdlog/include/spdlog/spdlog-inl.h \
src/vendor/spdlog/include/spdlog/fmt/ostr.h \
src/vendor/spdlog/include/spdlog/fmt/bundled/ostream.h
src/Navigator/Logger.h:
src/vendor/spdlog/include/spdlog/spdlog.h:
src/vendor/spdlog/include/spdlog/common.h:
src/vendor/spdlog/include/spdlog/tweakme.h:
src/vendor/spdlog/include/spdlog/details/null_mutex.h:
src/vendor/spdlog/include/spdlog/fmt/fmt.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/core.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format-inl.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/format.h:
src/vendor/spdlog/include/spdlog/common-inl.h:
src/vendor/spdlog/include/spdlog/details/registry.h:
src/vendor/spdlog/include/spdlog/details/registry-inl.h:
src/vendor/spdlog/include/spdlog/details/periodic_worker.h:
src/vendor/spdlog/include/spdlog/details/periodic_worker-inl.h:
src/vendor/spdlog/include/spdlog/logger.h:
src/vendor/spdlog/include/spdlog/details/log_msg.h:
src/vendor/spdlog/include/spdlog/details/log_msg-inl.h:
src/vendor/spdlog/include/spdlog/details/os.h:
src/vendor/spdlog/include/spdlog/details/os-inl.h:
src/vendor/spdlog/include/spdlog/details/backtracer.h:
src/vendor/spdlog/include/spdlog/details/log_msg_buffer.h:
src/vendor/spdlog/include/spdlog/details/log_msg_buffer-inl.h:
src/vendor/spdlog/include/spdlog/details/circular_q.h:
src/vendor/spdlog/include/spdlog/details/backtracer-inl.h:
src/vendor/spdlog/include/spdlog/logger-inl.h:
src/vendor/spdlog/include/spdlog/sinks/sink.h:
src/vendor/spdlog/include/spdlog/formatter.h:
src/vendor/spdlog/include/spdlog/sinks/sink-inl.h:
src/vendor/spdlog/include/spdlog/pattern_formatter.h:
src/vendor/spdlog/include/spdlog/pattern_formatter-inl.h:
src/vendor/spdlog/include/spdlog/details/fmt_helper.h:
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink.h:
src/vendor/spdlog/include/spdlog/details/console_globals.h:
src/vendor/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h:
src/vendor/spdlog/include/spdlog/version.h:
src/vendor/spdlog/include/spdlog/details/synchronous_factory.h:
src/vendor/spdlog/include/spdlog/spdlog-inl.h:
src/vendor/spdlog/include/spdlog/fmt/ostr.h:
src/vendor/spdlog/include/spdlog/fmt/bundled/ostream.h:

Binary file not shown.

Binary file not shown.

View File

@ -7,6 +7,6 @@
], ],
"settings": "settings":
{ {
"SublimeLinter.linters.g++.args": ["-c","-Wall","-fsyntax-only","-std=c++17","-include${folder}/src/navpch.h","-Isrc/"] "SublimeLinter.linters.g++.args": ["-c","-Wall","-fsyntax-only","-std=c++17","-include${folder}/src/navpch.h","-Isrc/", "-Isrc/vendor/spdlog/include"]
} }
} }

107
premake5.lua Normal file
View File

@ -0,0 +1,107 @@
workspace "Nova"
architecture "x64"
configurations {
"Debug",
"Release"
}
startproject "NavProject"
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
-- External directories to be included
IncludeDirs ={}
IncludeDirs["glfw"] = "src/vendor/glfw/include"
IncludeDirs["ImGui"] = "src/vendor/imgui"
include "src/vendor/glfw"
include "src/vendor/imgui"
project "Navigator"
kind "StaticLib"
language "C++"
cppdialect "C++17"
staticruntime "on"
targetdir ("lib/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
pchheader "navpch.h"
pchsource "navpch.cpp"
files {
"src/%{prj.name}/**.h",
"src/%{prj.name}/**.cpp"
}
defines {
"_CRT_SECURE_NO_WARNINGS"
}
includedirs {
"src/",
"src/vendor/spdlog/include/",
"src/%{prj.name}/",
"%{IncludeDirs.glfw}",
"%{IncludeDirs.ImGui}",
}
links {
"GLFW",
"ImGui",
"opengl32.lib"
}
systemversion "latest"
defines {
"GLFW_INCLUDE_NONE"
}
filter "configurations:Debug"
defines "NAV_DEBUG"
runtime "Debug"
symbols "on"
filter "configurations:Release"
defines "NAV_RELEASE"
runtime "Release"
optimize "on"
project "NavProject"
kind "ConsoleApp"
language "C++"
cppdialect "C++17"
staticruntime "on"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files {
"src/main.cpp"
}
includedirs {
"src/Navigator",
"src/vendor/spdlog/include/",
"src/vendor"
}
links {
"Navigator"
}
systemversion "latest"
filter "configurations:Debug"
defines "NAV_DEBUG"
runtime "Debug"
symbols "on"
filter "configurations:Release"
defines "NAV_RELEASE"
runtime "Release"
optimize "on"
filter "configurations:Dist"
defines "NAV_DIST"
runtime "Release"
optimize "on"

7
src/Navigator.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef NAVIGATOR_H
#define NAVIGATOR_H
#include "Navigator/Logger.h"
#include "Navigator/Application.h"
#endif

View File

@ -0,0 +1,31 @@
#include <navpch.h>
#include "Application.h"
namespace Navigator {
Application* Application::s_instance = nullptr;
Application::Application() :
m_runFlag(true)
{
s_instance = this;
}
Application::~Application() {}
void Application::OnEvent() {}
void Application::PushLayer() {}
void Application::PushOverlay() {}
void Application::Run()
{
while(m_runFlag)
{
NAV_TRACE("Doing a run.");
m_runFlag = false;
}
}
}

View File

@ -0,0 +1,33 @@
#ifndef APPLICATION_H
#define APPLICATION_H
namespace Navigator {
class Application
{
public:
Application();
virtual ~Application();
void Run();
void OnEvent();
void PushLayer();
void PushOverlay();
inline static Application& Get() { return *s_instance; }
inline void GetWindow() { return; }
private:
bool m_runFlag;
static Application* s_instance;
};
Application* CreateApplication();
}
#endif

View File

@ -74,7 +74,7 @@ namespace Navigator {
{ {
if(!IsOpen()) if(!IsOpen())
{ {
EVB_WARN("Unable to get hit size from file {0}, sending invalid value.", m_filename); NAV_WARN("Unable to get hit size from file {0}, sending invalid value.", m_filename);
return 0; return 0;
} }

View File

@ -11,116 +11,22 @@
*/ */
#include <navpch.h> #include <navpch.h>
#include "CompassRun.h" #include "CompassRun.h"
#include "RunCollector.h"
#include "SlowSort.h"
#include "FastSort.h"
#include "SFPAnalyzer.h"
#include "FlagHandler.h"
namespace Navigator { namespace Navigator {
CompassRun::CompassRun() : CompassRun::CompassRun() :
m_directory(""), m_scalerinput(""), m_runNum(0), m_scaler_flag(false), m_progressFraction(0.1) m_directory("")
{ {
} }
CompassRun::CompassRun(const std::string& dir) : CompassRun::CompassRun(const std::string& dir) :
m_directory(dir), m_scalerinput(""), m_runNum(0), m_scaler_flag(false), m_progressFraction(0.1) m_directory(dir)
{ {
} }
CompassRun::~CompassRun() {} CompassRun::~CompassRun() {}
/*Load em into a map*/
void CompassRun::SetScalers()
{
std::ifstream input(m_scalerinput);
if(!input.is_open())
return;
m_scaler_flag = true;
std::string junk, filename, varname;
Long64_t init = 0;
std::getline(input, junk);
std::getline(input, junk);
m_scaler_map.clear();
while(input>>filename)
{
input>>varname;
filename = m_directory+filename+"_run_"+std::to_string(m_runNum)+".bin";
m_scaler_map[filename] = TParameter<Long64_t>(varname.c_str(), init);
}
input.close();
}
bool CompassRun::GetBinaryFiles()
{
std::string prefix = "";
std::string suffix = ".bin"; //binaries
RunCollector grabber(m_directory, prefix, suffix);
grabber.GrabAllFiles();
m_datafiles.clear(); //so that the CompassRun can be reused
m_datafiles.reserve(grabber.GetFileList().size());
bool scalerd;
m_totalHits = 0; //reset total run size
for(auto& entry : grabber.GetFileList())
{
//Handle scaler files, if they exist
if(m_scaler_flag)
{
scalerd = false;
for(auto& scaler_pair : m_scaler_map)
{
if(entry == scaler_pair.first)
{
ReadScalerData(entry);
scalerd = true;
break;
}
}
if(scalerd)
continue;
}
m_datafiles.emplace_back(entry);
m_datafiles[m_datafiles.size()-1].AttachShiftMap(&m_smap);
//Any time we have a file that fails to be found, we terminate the whole process
if(!m_datafiles[m_datafiles.size() - 1].IsOpen())
return false;
m_totalHits += m_datafiles[m_datafiles.size()-1].GetNumberOfHits();
}
return true;
}
/*
Pure counting of scalers. Potential upgrade path to something like
average count rate etc.
*/
void CompassRun::ReadScalerData(const std::string& filename)
{
if(!m_scaler_flag)
return;
Long64_t count;
count = 0;
CompassFile file(filename);
auto& this_param = m_scaler_map[file.GetName()];
while(true)
{
file.GetNextHit();
if(file.IsEOF())
break;
count++;
}
this_param.SetVal(count);
}
/* /*
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
@ -162,382 +68,4 @@ namespace Navigator {
return true; return true;
} }
void CompassRun::Convert2RawRoot(const std::string& name) {
TFile* output = TFile::Open(name.c_str(), "RECREATE");
TTree* outtree = new TTree("Data", "Data");
outtree->Branch("Board", &hit.board);
outtree->Branch("Channel", &hit.channel);
outtree->Branch("Energy", &hit.lgate);
outtree->Branch("EnergyShort", &hit.sgate);
outtree->Branch("Timestamp", &hit.timestamp);
outtree->Branch("Flags", &hit.flags);
if(!m_smap.IsValid())
{
EVB_WARN("Bad shift map ({0}) at CompassRun::Convert(), shifts all set to 0.", m_smap.GetFilename());
}
SetScalers();
if(!GetBinaryFiles())
{
EVB_ERROR("Unable to find binary files at CompassRun::Convert(), exiting!");
return;
}
unsigned int count = 0, flush = m_totalHits*m_progressFraction, flush_count = 0;
startIndex = 0; //Reset the startIndex
if(flush == 0)
flush = 1;
while(true)
{
count++;
if(count == flush)
{ //Progress Log
count = 0;
flush_count++;
m_progressCallback(flush_count*flush, m_totalHits);
}
if(!GetHitsFromFiles())
break;
outtree->Fill();
}
output->cd();
outtree->Write(outtree->GetName(), TObject::kOverwrite);
for(auto& entry : m_scaler_map)
entry.second.Write();
output->Close();
}
void CompassRun::Convert2SortedRoot(const std::string& name, const std::string& mapfile, double window)
{
TFile* output = TFile::Open(name.c_str(), "RECREATE");
TTree* outtree = new TTree("SortTree", "SortTree");
outtree->Branch("event", &event);
if(!m_smap.IsValid())
{
EVB_WARN("Bad shift map ({0}) at CompassRun::Convert2SortedRoot(), shifts all set to 0.", m_smap.GetFilename());
}
SetScalers();
if(!GetBinaryFiles())
{
EVB_ERROR("Unable to find binary files at CompassRun::Convert2SortedRoot(), exiting!");
return;
}
unsigned int count = 0, flush = m_totalHits*m_progressFraction, flush_count = 0;
startIndex = 0;
SlowSort coincidizer(window, mapfile);
bool killFlag = false;
if(flush == 0)
flush = 1;
while(true)
{
count++;
if(count == flush)
{
count = 0;
flush_count++;
m_progressCallback(flush_count*flush, m_totalHits);
}
if(!GetHitsFromFiles())
{
coincidizer.FlushHitsToEvent();
killFlag = true;
}
else
coincidizer.AddHitToEvent(hit);
if(coincidizer.IsEventReady())
{
event = coincidizer.GetEvent();
outtree->Fill();
if(killFlag) break;
}
}
output->cd();
outtree->Write(outtree->GetName(), TObject::kOverwrite);
for(auto& entry : m_scaler_map)
entry.second.Write();
coincidizer.GetEventStats()->Write();
output->Close();
}
void CompassRun::Convert2FastSortedRoot(const std::string& name, const std::string& mapfile, double window, double fsi_window, double fic_window)
{
TFile* output = TFile::Open(name.c_str(), "RECREATE");
TTree* outtree = new TTree("SortTree", "SortTree");
outtree->Branch("event", &event);
if(!m_smap.IsValid())
{
EVB_WARN("Bad shift map ({0}) at CompassRun::Convert2FastSortedRoot(), shifts all set to 0.", m_smap.GetFilename());
}
SetScalers();
if(!GetBinaryFiles())
{
EVB_ERROR("Unable to find binary files at CompassRun::Convert2FastSortedRoot(), exiting!");
return;
}
unsigned int count = 0, flush = m_totalHits*m_progressFraction, flush_count = 0;
startIndex = 0;
CoincEvent this_event;
std::vector<CoincEvent> fast_events;
SlowSort coincidizer(window, mapfile);
FastSort speedyCoincidizer(fsi_window, fic_window);
FlagHandler flagger;
bool killFlag = false;
if(flush == 0)
flush = 1;
while(true)
{
count++;
if(count == flush)
{
count = 0;
flush_count++;
m_progressCallback(flush_count*flush, m_totalHits);
}
if(!GetHitsFromFiles())
{
coincidizer.FlushHitsToEvent();
killFlag = true;
}
else
{
flagger.CheckFlag(hit.board, hit.channel, hit.flags);
coincidizer.AddHitToEvent(hit);
}
if(coincidizer.IsEventReady())
{
this_event = coincidizer.GetEvent();
fast_events = speedyCoincidizer.GetFastEvents(this_event);
for(auto& entry : fast_events)
{
event = entry;
outtree->Fill();
}
if(killFlag)
break;
}
}
output->cd();
outtree->Write(outtree->GetName(), TObject::kOverwrite);
for(auto& entry : m_scaler_map)
entry.second.Write();
coincidizer.GetEventStats()->Write();
output->Close();
}
void CompassRun::Convert2SlowAnalyzedRoot(const std::string& name, const std::string& mapfile, double window,
int zt, int at, int zp, int ap, int ze, int ae, double bke, double b, double theta)
{
TFile* output = TFile::Open(name.c_str(), "RECREATE");
TTree* outtree = new TTree("SPSTree", "SPSTree");
outtree->Branch("event", &pevent);
if(!m_smap.IsValid())
{
EVB_WARN("Bad shift map ({0}) at CompassRun::Convert2SlowAnalyzedRoot(), shifts all set to 0.", m_smap.GetFilename());
}
SetScalers();
if(!GetBinaryFiles())
{
EVB_ERROR("Unable to find binary files at CompassRun::Convert2SlowAnalyzedRoot(), exiting!");
return;
}
unsigned int count = 0, flush = m_totalHits*m_progressFraction, flush_count = 0;
startIndex = 0;
CoincEvent this_event;
SlowSort coincidizer(window, mapfile);
SFPAnalyzer analyzer(zt, at, zp, ap, ze, ae, bke, theta, b);
std::vector<TParameter<Double_t>> parvec;
parvec.reserve(9);
parvec.emplace_back("ZT", zt);
parvec.emplace_back("AT", at);
parvec.emplace_back("ZP", zp);
parvec.emplace_back("AP", ap);
parvec.emplace_back("ZE", ze);
parvec.emplace_back("AE", ae);
parvec.emplace_back("Bfield", b);
parvec.emplace_back("BeamKE", bke);
parvec.emplace_back("Theta", theta);
bool killFlag = false;
if(flush == 0)
flush = 1;
while(true)
{
count++;
if(count == flush)
{
count = 0;
flush_count++;
m_progressCallback(flush_count*flush, m_totalHits);
}
if(!GetHitsFromFiles())
{
coincidizer.FlushHitsToEvent();
killFlag = true;
}
else
{
coincidizer.AddHitToEvent(hit);
}
if(coincidizer.IsEventReady())
{
this_event = coincidizer.GetEvent();
pevent = analyzer.GetProcessedEvent(this_event);
outtree->Fill();
if(killFlag)
break;
}
}
output->cd();
outtree->Write(outtree->GetName(), TObject::kOverwrite);
for(auto& entry : m_scaler_map)
entry.second.Write();
for(auto& entry : parvec)
entry.Write();
coincidizer.GetEventStats()->Write();
analyzer.GetHashTable()->Write();
analyzer.ClearHashTable();
output->Close();
}
void CompassRun::Convert2FastAnalyzedRoot(const std::string& name, const std::string& mapfile, double window, double fsi_window, double fic_window,
int zt, int at, int zp, int ap, int ze, int ae, double bke, double b, double theta)
{
TFile* output = TFile::Open(name.c_str(), "RECREATE");
TTree* outtree = new TTree("SPSTree", "SPSTree");
outtree->Branch("event", &pevent);
if(!m_smap.IsValid())
{
EVB_WARN("Bad shift map ({0}) at CompassRun::Convert2FastAnalyzedRoot(), shifts all set to 0.", m_smap.GetFilename());
}
SetScalers();
if(!GetBinaryFiles())
{
EVB_ERROR("Unable to find binary files at CompassRun::Convert2FastAnalyzedRoot(), exiting!");
return;
}
unsigned int count = 0, flush = m_totalHits*m_progressFraction, flush_count = 0;
startIndex = 0;
CoincEvent this_event;
std::vector<CoincEvent> fast_events;
SlowSort coincidizer(window, mapfile);
FastSort speedyCoincidizer(fsi_window, fic_window);
SFPAnalyzer analyzer(zt, at, zp, ap, ze, ae, bke, theta, b);
std::vector<TParameter<Double_t>> parvec;
parvec.reserve(9);
parvec.emplace_back("ZT", zt);
parvec.emplace_back("AT", at);
parvec.emplace_back("ZP", zp);
parvec.emplace_back("AP", ap);
parvec.emplace_back("ZE", ze);
parvec.emplace_back("AE", ae);
parvec.emplace_back("Bfield", b);
parvec.emplace_back("BeamKE", bke);
parvec.emplace_back("Theta", theta);
FlagHandler flagger;
bool killFlag = false;
if(flush == 0)
flush = 1;
while(true)
{
count++;
if(count == flush)
{
count = 0;
flush_count++;
m_progressCallback(flush_count*flush, m_totalHits);
}
if(!GetHitsFromFiles())
{
coincidizer.FlushHitsToEvent();
killFlag = true;
}
else
{
flagger.CheckFlag(hit.board, hit.channel, hit.flags);
coincidizer.AddHitToEvent(hit);
}
if(coincidizer.IsEventReady())
{
this_event = coincidizer.GetEvent();
fast_events = speedyCoincidizer.GetFastEvents(this_event);
for(auto& entry : fast_events)
{
pevent = analyzer.GetProcessedEvent(entry);
outtree->Fill();
}
if(killFlag)
break;
}
}
output->cd();
outtree->Write(outtree->GetName(), TObject::kOverwrite);
for(auto& entry : m_scaler_map)
entry.second.Write();
for(auto& entry : parvec)
entry.Write();
coincidizer.GetEventStats()->Write();
analyzer.GetHashTable()->Write();
analyzer.ClearHashTable();
output->Close();
}
} }

View File

@ -11,11 +11,7 @@
#define COMPASSRUN_H #define COMPASSRUN_H
#include "CompassFile.h" #include "CompassFile.h"
#include "DataStructs.h"
#include "RunCollector.h"
#include "ShiftMap.h" #include "ShiftMap.h"
#include "ProgressCallback.h"
#include <TParameter.h>
namespace Navigator { namespace Navigator {
@ -27,46 +23,26 @@ namespace Navigator {
CompassRun(const std::string& dir); CompassRun(const std::string& dir);
~CompassRun(); ~CompassRun();
inline void SetDirectory(const std::string& dir) { m_directory = dir; } inline void SetDirectory(const std::string& dir) { m_directory = dir; }
inline void SetScalerInput(const std::string& filename) { m_scalerinput = filename; }
inline void SetRunNumber(int n) { m_runNum = n; } inline void SetRunNumber(int n) { m_runNum = n; }
inline void SetShiftMap(const std::string& filename) { m_smap.SetFile(filename); } inline void SetShiftMap(const std::string& filename) { m_smap.SetFile(filename); }
void Convert2RawRoot(const std::string& name);
void Convert2SortedRoot(const std::string& name, const std::string& mapfile, double window);
void Convert2FastSortedRoot(const std::string& name, const std::string& mapfile, double window, double fsi_window, double fic_window);
void Convert2SlowAnalyzedRoot(const std::string& name, const std::string& mapfile, double window,
int zt, int at, int zp, int ap, int ze, int ae, double bke, double b, double theta);
void Convert2FastAnalyzedRoot(const std::string& name, const std::string& mapfile, double window, double fsi_window, double fic_window,
int zt, int at, int zp, int ap, int ze, int ae, double bke, double b, double theta);
inline void SetProgressCallbackFunc(const ProgressCallbackFunc& function) { m_progressCallback = function; }
inline void SetProgressFraction(double frac) { m_progressFraction = frac; }
private: private:
bool GetBinaryFiles();
bool GetHitsFromFiles(); bool GetHitsFromFiles();
void SetScalers();
void ReadScalerData(const std::string& filename);
std::string m_directory, m_scalerinput; std::string m_directory;
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;
std::unordered_map<std::string, TParameter<Long64_t>> m_scaler_map; //maps scaler files to the TParameter to be saved
//Potential branch variables //Potential branch variables
CompassHit hit; CompassHit hit;
CoincEvent event;
ProcessedEvent pevent;
//what run is this //what run is this
int m_runNum; int m_runNum;
unsigned int m_totalHits; unsigned int m_totalHits;
//Scaler switch //Scaler switch
bool m_scaler_flag;
ProgressCallbackFunc m_progressCallback;
double m_progressFraction;
}; };
} }

View File

@ -0,0 +1,17 @@
#include <navpch.h>
#include "Logger.h"
#include "spdlog/sinks/stdout_color_sinks.h"
namespace Navigator {
std::shared_ptr<spdlog::logger> Logger::s_logger;
void Logger::Init()
{
spdlog::set_pattern("%^[%T] %n: %v%$");
s_logger = spdlog::stdout_color_mt("NAV");
s_logger->set_level(spdlog::level::trace);
}
}

View File

@ -2,4 +2,29 @@
#define LOGGER_H #define LOGGER_H
#include "spdlog/spdlog.h" #include "spdlog/spdlog.h"
#include "spdlog/fmt/" #include "spdlog/fmt/ostr.h"
namespace Navigator {
class Logger
{
public:
static void Init();
inline static std::shared_ptr<spdlog::logger> GetLogger() { return s_logger; }
private:
static std::shared_ptr<spdlog::logger> s_logger;
};
}
#define NAV_CRITICAL(...) ::Navigator::Logger::GetLogger()->critical(__VA_ARGS__)
#define NAV_WARN(...) ::Navigator::Logger::GetLogger()->warn(__VA_ARGS__)
#define NAV_ERROR(...) ::Navigator::Logger::GetLogger()->error(__VA_ARGS__)
#define NAV_TRACE(...) ::Navigator::Logger::GetLogger()->trace(__VA_ARGS__)
#define NAV_INFO(...) ::Navigator::Logger::GetLogger()->info(__VA_ARGS__)
#endif

16
src/main.cpp Normal file
View File

@ -0,0 +1,16 @@
#include "Navigator.h"
Navigator::Application* Navigator::CreateApplication() { return new Application(); }
int main(int argc, const char** argv)
{
Navigator::Logger::Init();
NAV_TRACE("Logger Initialized!");
auto app = Navigator::CreateApplication();
NAV_TRACE("Navigator Application Created!");
app->Run();
delete app;
}

1
src/navpch.cpp Normal file
View File

@ -0,0 +1 @@
#include "navpch.h"

View File

@ -17,4 +17,6 @@
#include <cstdint> #include <cstdint>
#include "Navigator/Logger.h"
#endif #endif