File indexing completed on 2025-08-05 08:19:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
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
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
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
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
0277
0278
0279
0280
0281
0282
0283
0284
0285 }