Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:19:19

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 #include "JetScapeSignalManager.h"
0017 #include "JetScapeLogger.h"
0018 #include <stdlib.h>
0019 
0020 using namespace std;
0021 
0022 namespace Jetscape {
0023 
0024 JetScapeSignalManager *JetScapeSignalManager::m_pInstance = NULL;
0025 
0026 JetScapeSignalManager *JetScapeSignalManager::Instance() {
0027   if (!m_pInstance) {
0028     JSINFO << "Created JetScapeSignalManager Instance";
0029     m_pInstance = new JetScapeSignalManager();
0030   }
0031 
0032   return m_pInstance;
0033 }
0034 
0035 void JetScapeSignalManager::ConnectGetHardPartonListSignal(
0036     shared_ptr<JetEnergyLossManager> jm) {
0037   if (!jm->GetGetHardPartonListConnected()) {
0038     auto hpp = GetHardProcessPointer().lock();
0039     if (hpp) {
0040       jm->GetHardPartonList.connect(hpp.get(), &HardProcess::GetHardPartonList);
0041       jm->SetGetHardPartonListConnected(true);
0042     }
0043   }
0044 }
0045 
0046 void JetScapeSignalManager::ConnectGetFinalPartonListSignal(
0047     shared_ptr<HadronizationManager> hm) {
0048   if (!hm->GetGetFinalPartonListConnected()) {
0049 
0050     auto elp = GetEnergyLossPointer().lock();
0051     if (elp) {
0052       hm->GetFinalPartonList.connect(elp.get(),
0053                                      &JetEnergyLoss::SendFinalStatePartons);
0054       hm->SetGetFinalPartonListConnected(true);
0055     }
0056   }
0057 
0058   if (!hm->GetGetHadronListConnected()) {
0059     auto hpp = GetHardProcessPointer().lock();
0060     if (hpp) {
0061       hm->GetHadronList.connect(hpp.get(), &HardProcess::GetHadronList);
0062       hm->SetGetHadronListConnected(true);
0063     }
0064   }
0065 }
0066 
0067 void JetScapeSignalManager::ConnectJetSignal(shared_ptr<JetEnergyLoss> j) {
0068   if (!j->GetJetSignalConnected()) {
0069     auto hp = GetHydroPointer().lock();
0070     if (hp) {
0071       j->jetSignal.connect(hp.get(), &FluidDynamics::UpdateEnergyDeposit);
0072       j->SetJetSignalConnected(true);
0073       jet_signal_map.emplace(num_jet_signals, (weak_ptr<JetEnergyLoss>)j);
0074       num_jet_signals++;
0075     }
0076   }
0077 }
0078 
0079 void JetScapeSignalManager::ConnectEdensitySignal(shared_ptr<JetEnergyLoss> j) {
0080   if (!j->GetEdensitySignalConnected()) {
0081     auto hp = GetHydroPointer().lock();
0082     if (hp) {
0083       j->edensitySignal.connect(hp.get(), &FluidDynamics::GetEnergyDensity);
0084       j->SetEdensitySignalConnected(true);
0085       edensity_signal_map.emplace(num_edensity_signals,
0086                                   (weak_ptr<JetEnergyLoss>)j);
0087       num_edensity_signals++;
0088     }
0089   }
0090 }
0091 
0092 void JetScapeSignalManager::ConnectGetHydroTau0Signal(
0093     shared_ptr<JetEnergyLoss> j) {
0094   if (!j->GetGetHydroTau0SignalConnected()) {
0095     auto hp = GetHydroPointer().lock();
0096     if (hp) {
0097       j->GetHydroTau0Signal.connect(hp.get(), &FluidDynamics::GetHydroStartTime);
0098       j->SetGetHydroTau0SignalConnected(true);
0099     }
0100   }
0101 }
0102 
0103 void JetScapeSignalManager::ConnectGetHydroCellSignal(
0104     shared_ptr<JetEnergyLoss> j) {
0105   if (!j->GetGetHydroCellSignalConnected()) {
0106     auto hp = GetHydroPointer().lock();
0107     if (hp) {
0108       j->GetHydroCellSignal.connect(hp.get(), &FluidDynamics::GetHydroCell);
0109       j->SetGetHydroCellSignalConnected(true);
0110       GetHydroCellSignal_map.emplace(num_GetHydroCellSignals,
0111                                      (weak_ptr<JetEnergyLoss>)j);
0112       num_GetHydroCellSignals++;
0113     }
0114   }
0115 }
0116 
0117 void JetScapeSignalManager::ConnectGetHydroCellSignal(
0118     shared_ptr<LiquefierBase> l) {
0119   if (!l->get_GetHydroCellSignalConnected()) {
0120     auto hp = GetHydroPointer().lock();
0121     if (hp) {
0122       l->GetHydroCellSignal.connect(hp.get(), &FluidDynamics::GetHydroCell);
0123       l->set_GetHydroCellSignalConnected(true);
0124     }
0125   }
0126 }
0127 
0128 void JetScapeSignalManager::ConnectGetHydroCellSignal(
0129     shared_ptr<Hadronization> h) {
0130   if (!h->GetGetHydroCellSignalConnected()) {
0131     auto hp = GetHydroPointer().lock();
0132     if (hp) {
0133       h->GetHydroCellSignal.connect(hp.get(), &FluidDynamics::GetHydroCell);
0134       h->SetGetHydroCellSignalConnected(true);
0135     }
0136   }
0137 }
0138 
0139 void JetScapeSignalManager::ConnectSentInPartonsSignal(
0140     shared_ptr<JetEnergyLoss> j, shared_ptr<JetEnergyLoss> j2) {
0141   if (!j2->GetSentInPartonsConnected()) {
0142     j->SentInPartons.connect(j2.get(), &JetEnergyLoss::DoEnergyLoss);
0143     j2->SetSentInPartonsConnected(true);
0144     SentInPartons_map.emplace(num_SentInPartons, (weak_ptr<JetEnergyLoss>)j2);
0145 
0146     num_SentInPartons++;
0147   }
0148 }
0149 
0150 void JetScapeSignalManager::ConnectTransformPartonsSignal(
0151     shared_ptr<Hadronization> h, shared_ptr<Hadronization> h2) {
0152   if (!h2->GetTransformPartonsConnected()) {
0153     h->TransformPartons.connect(h2.get(), &Hadronization::DoHadronization);
0154     h2->SetTransformPartonsConnected(true);
0155     TransformPartons_map.emplace(num_TransformPartons,
0156                                  (weak_ptr<Hadronization>)h2);
0157 
0158     num_TransformPartons++;
0159   }
0160 }
0161 
0162 
0163 void JetScapeSignalManager::ConnectGetFinalHadronListSignal(
0164                                                 shared_ptr<HadronPrinter> h){
0165     auto hadroMgrShared = GetHadronizationManagerPointer().lock();
0166     //hadronPrinter->GetFinalHadronList.connect(hadro.get(), &Hadronization::GetHadrons);
0167     h->GetFinalHadronList.connect(hadroMgrShared.get(),
0168                                   &HadronizationManager::GetHadrons);
0169 }
0170 
0171 
0172 void JetScapeSignalManager::ConnectGetHydroHyperSurfaceSignal(
0173     shared_ptr<Hadronization> h) {
0174     if (!h->GetGetHydroHyperSurfaceConnected()) {
0175         auto hp = GetHydroPointer().lock();
0176         if (hp) {
0177             h->GetHydroHyperSurface.connect(
0178                 hp.get(), &FluidDynamics::FindAConstantTemperatureSurface);
0179             h->SetGetHydroHyperSurfaceConnected(true);
0180         }
0181     }
0182 }
0183 
0184 void JetScapeSignalManager::CleanUp() {
0185   VERBOSE(8);
0186 
0187   // hmmm wrong caintainer .. should have used vectore with struct instead of map!!!!
0188 
0189   auto loss = jloss.lock();
0190   if (loss) {
0191     int nEnd = SentInPartons_map.size();
0192     int nStart = loss->GetTaskAt(0)->GetNumberOfTasks();
0193 
0194     for (int i = nStart; i < nEnd; i++) {
0195       jet_signal_map.erase(i);
0196       num_jet_signals--;
0197 
0198       edensity_signal_map.erase(i);
0199       num_edensity_signals--;
0200 
0201       GetHydroCellSignal_map.erase(i);
0202       num_GetHydroCellSignals--;
0203 
0204       SentInPartons_map.erase(i);
0205       num_SentInPartons--;
0206 
0207       TransformPartons_map.erase(i);
0208       num_TransformPartons--;
0209     }
0210   } else {
0211     jet_signal_map.clear();
0212     edensity_signal_map.clear();
0213     GetHydroCellSignal_map.clear(), SentInPartons_map.clear();
0214     TransformPartons_map.clear();
0215     // think better here how to handle the clean of when the instance goes out of scope ...!???
0216   }
0217 
0218   PrintGetHydroCellSignalMap();
0219   PrintSentInPartonsSignalMap();
0220   PrintTransformPartonsSignalMap();
0221 
0222   VERBOSE(8) << "Done ...";
0223 }
0224 
0225 void JetScapeSignalManager::PrintJetSignalMap() {
0226   for (auto &x : jet_signal_map) {
0227     auto xs = x.second.lock();
0228     if (xs) {
0229       VERBOSE(8) << "[" << x.first << ':' << xs.get() << ']' << " "
0230                  << xs->GetId();
0231     }
0232   }
0233 }
0234 
0235 void JetScapeSignalManager::PrintEdensitySignalMap() {
0236   for (auto &x : edensity_signal_map) {
0237     auto xs = x.second.lock();
0238     if (xs) {
0239       VERBOSE(8) << "[" << x.first << ':' << xs.get() << ']' << " "
0240                  << xs->GetId();
0241     }
0242   }
0243 }
0244 
0245 void JetScapeSignalManager::PrintGetHydroCellSignalMap() {
0246   for (auto &x : GetHydroCellSignal_map) {
0247     auto xs = x.second.lock();
0248     if (xs) {
0249       VERBOSE(8) << "[" << x.first << ':' << xs.get() << ']' << " "
0250                  << xs->GetId();
0251     }
0252   }
0253 }
0254 
0255 void JetScapeSignalManager::PrintSentInPartonsSignalMap() {
0256   for (auto &x : SentInPartons_map) {
0257     auto xs = x.second.lock();
0258     if (xs) {
0259       VERBOSE(8) << "[" << x.first << ':' << xs.get() << ']' << " "
0260                  << xs->GetId();
0261     }
0262   }
0263 }
0264 
0265 void JetScapeSignalManager::PrintTransformPartonsSignalMap() {
0266   for (auto &x : TransformPartons_map) {
0267     auto xs = x.second.lock();
0268     if (xs) {
0269       VERBOSE(8) << "[" << x.first << ':' << xs.get() << ']' << " "
0270                  << xs->GetId();
0271     }
0272   }
0273 }
0274 
0275 /*
0276 void JetScapeSignalManager::Clear()
0277 {
0278   // if use of shared pointers ...
0279   //hydro=nullptr;
0280   //jloss=nullptr;
0281   // ...
0282 }
0283 */
0284 
0285 } // end namespace Jetscape