Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:19:29

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 
0004 #ifndef PHHEPMC_HEPMCFLOWAFTERBURNER_H
0005 #define PHHEPMC_HEPMCFLOWAFTERBURNER_H
0006 
0007 #include <fun4all/SubsysReco.h>
0008 
0009 #include <array>
0010 #include <string>
0011 
0012 #include <flowafterburner/AfterburnerAlgo.h>
0013 
0014 class Afterburner;
0015 class AfterburnerAlgo;
0016 namespace CLHEP
0017 {
0018   class HepRandomEngine;
0019 }
0020 
0021 class PHCompositeNode;
0022 
0023 class HepMCFlowAfterBurner : public SubsysReco
0024 {
0025  public:
0026   HepMCFlowAfterBurner(const std::string &name = "HEPMCFLOWAFTERBURNER");
0027   ~HepMCFlowAfterBurner() override {}
0028 
0029   int Init(PHCompositeNode *) override;
0030   int process_event(PHCompositeNode *) override;
0031 
0032   void Print(const std::string &what = "ALL") const override;
0033 
0034   void setAlgorithmName(const std::string &name);
0035 
0036   void setMinEta(const float f)
0037   {
0038     mineta = f;
0039   }
0040   void setMaxEta(const float f)
0041   {
0042     maxeta = f;
0043   }
0044   void setMinPt(const float f)
0045   {
0046     minpt = f;
0047   }
0048   void setMaxPt(const float f)
0049   {
0050     maxpt = f;
0051   }
0052   void setSeed(const long il);
0053 
0054   void enableFluctuations(const bool enable)
0055   {
0056     enableFlucuations = enable;
0057   }
0058 
0059   void scaleFlow(const float scale, const unsigned int n = 0);
0060 
0061   void SaveRandomState(const std::string &savefile = "HepMCFlowAfterBurner.ransave");
0062   void RestoreRandomState(const std::string &savefile = "HepMCFlowAfterBurner.ransave");
0063 
0064  protected:
0065   std::string config_filename;
0066   std::string algorithmName = "MINBIAS";
0067   AfterburnerAlgo::flowAfterburnerAlgorithm m_flowalgorithm = AfterburnerAlgo::minbias_algorithm;
0068 
0069   float mineta = -5.;
0070   float maxeta = 5.;
0071 
0072   float minpt = 0.;
0073   float maxpt = 100.;
0074 
0075   int seedset = 0;
0076   long seed = 0;
0077   long randomSeed = 11793;
0078 
0079   bool enableFlucuations = true;                                           //  turns on/off the fluctuations in the afterburner
0080   std::array<float, 6> flowScales = {1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F};  // scales for the flow harmonics
0081 
0082   Afterburner *m_afterburner = nullptr;
0083   AfterburnerAlgo *m_flowalgo = nullptr;
0084   CLHEP::HepRandomEngine *m_engine = nullptr;
0085 };
0086 
0087 #endif