File indexing completed on 2026-07-16 08:13:58
0001 #ifndef BCOLUMICOUNT_STREAMINGLUMIRECO_H
0002 #define BCOLUMICOUNT_STREAMINGLUMIRECO_H
0003
0004 #include "StreamingLumiInfo.h"
0005
0006 #include <fun4all/SubsysReco.h>
0007 #include <fun4all/Fun4AllHistoManager.h>
0008
0009 #include <string>
0010 #include <utility>
0011 #include <array>
0012
0013 class TH1;
0014
0015 class StreamingLumiReco : public SubsysReco
0016 {
0017 public:
0018 StreamingLumiReco(const std::string &name = "STREAMINGBCOLUMIRECO");
0019 ~StreamingLumiReco() override = default;
0020
0021 int Init(PHCompositeNode *topNode) override;
0022 int InitRun(PHCompositeNode *topNode) override;
0023 int process_event(PHCompositeNode *topNode) override;
0024 int EndRun(const int runnumber) override;
0025
0026 virtual const std::array<double, 120> get_bunchnumber_lumi_raw() const { return m_bunchnumber_lumi_raw; }
0027 virtual const std::array<double, 120> get_bunchnumber_lumi_live() const { return m_bunchnumber_lumi_live; }
0028 virtual const std::array<double, 120> get_bunchnumber_lumi_scaled() const { return m_bunchnumber_lumi_scaled; }
0029
0030 virtual double get_lumi_raw() const { return m_lumi_raw; }
0031 virtual double get_lumi_live() const { return m_lumi_live; }
0032 virtual double get_lumi_scaled() const { return m_lumi_scaled; }
0033
0034 virtual void set_default_positive_window_length(int val) { m_default_positive_window_length = val; }
0035 virtual void set_default_negative_window_length(int val) { m_default_negative_window_length = val; }
0036
0037
0038 private:
0039 static int CreateNodeTree(PHCompositeNode *topNode);
0040
0041 int m_bunches = 120;
0042 unsigned int m_default_positive_window_length{340};
0043 unsigned int m_default_negative_window_length{20};
0044
0045
0046
0047 uint64_t m_rawgl1scaler{0};
0048
0049 std::array<long, 120> m_bunchnumber_MBDNS_raw{0};
0050 std::array<long, 120> m_bunchnumber_MBDNS_live{0};
0051 std::array<long, 120> m_bunchnumber_MBDNS_scaled{0};
0052
0053 std::array<long, 120> m_bunchnumber_crossings{0};
0054
0055 std::array<double, 120> m_bunchnumber_lumi_raw{0.};
0056 std::array<double, 120> m_bunchnumber_lumi_live{0.};
0057 std::array<double, 120> m_bunchnumber_lumi_scaled{0.};
0058
0059 double m_lumi_raw{0.};
0060 double m_lumi_live{0.};
0061 double m_lumi_scaled{0.};
0062
0063 StreamingLumiInfo *m_streaming_lumi_info = nullptr;
0064
0065 };
0066
0067 #endif