Back to home page

sPhenix code displayed by LXR

 
 

    


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 // Forward declarations
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   //! constructor
0023   explicit CentralityReco(const std::string &name = "CentralityReco");
0024 
0025   //! destructor
0026   ~CentralityReco() override = default;
0027 
0028   //! full initialization
0029   int InitRun(PHCompositeNode *) override;
0030   void CreateNodes(PHCompositeNode *);
0031   int FillCentralityInfo();
0032   int FillVars();
0033   int GetNodes(PHCompositeNode *);
0034 
0035   //! event processing method
0036   int process_event(PHCompositeNode *) override;
0037   int ResetEvent(PHCompositeNode *) override;
0038 
0039   // Interface with CDB
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.}; // init to zero for use in first event
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