Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:19:55

0001 /*******************************************************************************
0002  * Copyright (c) The JETSCAPE Collaboration, 2018
0003  *
0004  * Modular, task-based framework for simulating all aspects of heavy-ion collisions
0005  *
0006  * For the list of contributors see AUTHORS.
0007  *
0008  * Report issues at https://github.com/JETSCAPE/JETSCAPE/issues
0009  *
0010  * or via email to bugs.jetscape@gmail.com
0011  *
0012  * Distributed under the GNU General Public License 3.0 (GPLv3 or later).
0013  * See COPYING for details.
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 //#include "MakeUniqueHelper.h"
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   // empties the outHadrons vector, explanation why this is necessary is given
0087   // in HadronizationManager.h
0088   void DeleteHadrons();
0089 
0090   // erases the outHadrons with positive status flag
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 } // namespace Jetscape
0105 
0106 #endif