File indexing completed on 2025-12-17 09:19:29
0001
0002
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;
0080 std::array<float, 6> flowScales = {1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F};
0081
0082 Afterburner *m_afterburner = nullptr;
0083 AfterburnerAlgo *m_flowalgo = nullptr;
0084 CLHEP::HepRandomEngine *m_engine = nullptr;
0085 };
0086
0087 #endif