File indexing completed on 2024-06-29 07:06:05
0001
0002 #pragma once
0003
0004 #include <JANA/JEvent.h>
0005 #include <JANA/JEventProcessor.h>
0006 #include <podio/ROOTFrameWriter.h>
0007 #include <spdlog/logger.h>
0008 #include <memory>
0009 #include <mutex>
0010 #include <set>
0011 #include <string>
0012 #include <vector>
0013
0014
0015 class JEventProcessorPODIO : public JEventProcessor {
0016
0017 public:
0018
0019 JEventProcessorPODIO();
0020 virtual ~JEventProcessorPODIO() = default;
0021
0022 void Init() override;
0023 void Process(const std::shared_ptr<const JEvent>& event) override;
0024 void Finish() override;
0025
0026 void FindCollectionsToWrite(const std::shared_ptr<const JEvent>& event);
0027
0028 std::unique_ptr<podio::ROOTFrameWriter> m_writer;
0029 std::mutex m_mutex;
0030 bool m_is_first_event = true;
0031 bool m_user_included_collections = false;
0032 std::shared_ptr<spdlog::logger> m_log;
0033 bool m_output_include_collections_set = false;
0034
0035 std::string m_output_file = "podio_output.root";
0036 std::string m_output_file_copy_dir = "";
0037 std::set<std::string> m_output_collections;
0038 std::set<std::string> m_output_exclude_collections;
0039 std::vector<std::string> m_collections_to_write;
0040 std::vector<std::string> m_collections_to_print;
0041
0042 };