File indexing completed on 2025-08-05 08:16:28
0001 #ifndef CENTRALITY_CENTRALITYRECO_H
0002 #define CENTRALITY_CENTRALITYRECO_H
0003
0004 #include <fun4all/SubsysReco.h>
0005 #include <array>
0006 #include <vector>
0007 #include <limits>
0008 #include <string> // for string, allocator
0009
0010
0011 class CentralityInfo;
0012 class MinimumBiasInfo;
0013 class PHCompositeNode;
0014 class GlobalVertexMap;
0015 class MbdOut;
0016 class MbdPmtContainer;
0017 class MbdPmtHit;
0018
0019 class CentralityReco : public SubsysReco
0020 {
0021 public:
0022
0023 explicit CentralityReco(const std::string &name = "CentralityReco");
0024
0025
0026 ~CentralityReco() override = default;
0027
0028
0029 int InitRun(PHCompositeNode *) override;
0030 void CreateNodes(PHCompositeNode *);
0031 int FillCentralityInfo();
0032 int FillVars();
0033 int GetNodes(PHCompositeNode *);
0034
0035
0036 int process_event(PHCompositeNode *) override;
0037 int ResetEvent(PHCompositeNode *) override;
0038
0039
0040 int Download_centralityDivisions(const std::string &dbfile);
0041 int Download_centralityScale(const std::string &dbfile);
0042 int Download_centralityVertexScales(const std::string &dbfile);
0043
0044 void setOverwriteDivs(const std::string &url)
0045 {
0046 m_overwrite_url_divs = url;
0047 m_overwrite_divs = true;
0048 }
0049 void setOverwriteScale(const std::string &url)
0050 {
0051 m_overwrite_url_scale = url;
0052 m_overwrite_scale = true;
0053 }
0054 void setOverwriteVtx(const std::string &url)
0055 {
0056 m_overwrite_url_vtx = url;
0057 m_overwrite_vtx = true;
0058 }
0059 private:
0060
0061
0062 float getVertexScale();
0063
0064 std::string m_dbfilename;
0065
0066 bool m_overwrite_divs{false};
0067 bool m_overwrite_scale{false};
0068 bool m_overwrite_vtx{false};
0069 std::string m_overwrite_url_divs{""};
0070 std::string m_overwrite_url_scale{""};
0071 std::string m_overwrite_url_vtx{""};
0072
0073 const int NDIVS{100};
0074 const float mbd_charge_cut{0.5};
0075 const float mbd_time_cut{25};
0076
0077 GlobalVertexMap *m_global_vertex_map{nullptr};
0078 MbdOut *m_mbd_out{nullptr};
0079 MbdPmtContainer *m_mbd_container{nullptr};
0080 MbdPmtHit *m_mbd_hit{nullptr};
0081 MinimumBiasInfo *m_mb_info{nullptr};
0082 CentralityInfo *m_central{nullptr};
0083
0084 unsigned int m_key{std::numeric_limits<unsigned int>::max()};
0085
0086 float m_mbd_total_charge{0.};
0087
0088 double m_centrality_scale{std::numeric_limits<double>::quiet_NaN()};
0089 std::vector<std::pair<std::pair<float, float>, float>> m_vertex_scales{};
0090 std::array<float, 100> m_centrality_map{};
0091
0092
0093 };
0094
0095 #endif