File indexing completed on 2025-08-03 08:19:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef HADRONIZATION_H
0017 #define HADRONIZATION_H
0018
0019 #include "JetScapeModuleBase.h"
0020 #include "JetClass.h"
0021 #include "JetScapeWriter.h"
0022 #include "PartonShower.h"
0023 #include "SurfaceFinder.h"
0024
0025 #include <vector>
0026 #include <random>
0027
0028 namespace Jetscape {
0029
0030 class Hadronization : public JetScapeModuleBase,
0031 public std::enable_shared_from_this<Hadronization> {
0032 public:
0033 Hadronization();
0034 virtual ~Hadronization();
0035 virtual shared_ptr<Hadronization> Clone() const { return nullptr; }
0036 virtual void Init();
0037 virtual void Exec();
0038 virtual void DoHadronization(vector<vector<shared_ptr<Parton>>> &pIn,
0039 vector<shared_ptr<Hadron>> &hOut,
0040 vector<shared_ptr<Parton>> &pOut){};
0041 virtual void WriteTask(weak_ptr<JetScapeWriter> w);
0042 virtual void Clear();
0043
0044 void GetHadrons(vector<shared_ptr<Hadron>>& signal){signal = outHadrons;}
0045 sigslot::signal3<vector<vector<shared_ptr<Parton>>> &,
0046 vector<shared_ptr<Hadron>> &, vector<shared_ptr<Parton>> &,
0047 multi_threaded_local>
0048 TransformPartons;
0049
0050 sigslot::signal2<Jetscape::real, std::vector<SurfaceCellInfo> &,
0051 multi_threaded_local> GetHydroHyperSurface;
0052
0053 sigslot::signal5<double, double, double, double,
0054 std::unique_ptr<FluidCellInfo> &, multi_threaded_local>
0055 GetHydroCellSignal;
0056
0057
0058 vector<shared_ptr<Hadron>> GetHadrons() { return outHadrons; }
0059 vector<shared_ptr<Parton>> GetOutPartons() { return outPartons; }
0060
0061 void AddInPartons(vector<vector<shared_ptr<Parton>>> ip) { inPartons = ip; }
0062
0063 void SetTransformPartonsConnected(bool m_TransformPartonsConnected) {
0064 TransformPartonsConnected = m_TransformPartonsConnected;
0065 }
0066 const bool GetTransformPartonsConnected() {
0067 return TransformPartonsConnected;
0068 }
0069
0070 void SetGetHydroHyperSurfaceConnected(bool m_GetHydroHyperSurfaceConnected) {
0071 HydroHyperSurfaceConnected_ = m_GetHydroHyperSurfaceConnected;
0072 }
0073 const bool GetGetHydroHyperSurfaceConnected() {
0074 return HydroHyperSurfaceConnected_;
0075 }
0076
0077 void SetGetHydroCellSignalConnected(bool m_GetHydroCellSignalConnected) {
0078 GetHydroCellSignalConnected_ = m_GetHydroCellSignalConnected;
0079 }
0080 const bool GetGetHydroCellSignalConnected() {
0081 return GetHydroCellSignalConnected_;
0082 }
0083
0084 void AddInHadrons(vector<shared_ptr<Hadron>> ih) { outHadrons = ih; }
0085
0086
0087
0088 void DeleteHadrons();
0089
0090
0091 void DeleteRealHadrons();
0092
0093 private:
0094 vector<vector<shared_ptr<Parton>>> inPartons;
0095 vector<shared_ptr<Hadron>> outHadrons;
0096 vector<shared_ptr<Parton>> outPartons;
0097 void DoHadronize();
0098
0099 bool TransformPartonsConnected;
0100 bool HydroHyperSurfaceConnected_;
0101 bool GetHydroCellSignalConnected_;
0102 };
0103
0104 }
0105
0106 #endif