Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:30

0001 #include "CopyIODataNodes.h"
0002 
0003 #include <globalvertex/GlobalVertexMapv1.h>
0004 #include <globalvertex/GlobalVertexMap.h>
0005 
0006 #include <calotrigger/MinimumBiasInfo.h>
0007 
0008 #include <centrality/CentralityInfo.h>
0009 
0010 #include <mbd/MbdOut.h>
0011 
0012 #include <ffaobjects/EventHeader.h>
0013 #include <ffaobjects/RunHeader.h>
0014 #include <ffaobjects/SyncObject.h>
0015 
0016 #include <fun4all/Fun4AllReturnCodes.h>
0017 #include <fun4all/Fun4AllServer.h>
0018 
0019 #include <phool/PHCompositeNode.h>
0020 #include <phool/getClass.h>
0021 
0022 //____________________________________________________________________________..
0023 CopyIODataNodes::CopyIODataNodes(const std::string &name)
0024   : SubsysReco(name)
0025 {
0026 }
0027 
0028 //____________________________________________________________________________..
0029 int CopyIODataNodes::InitRun(PHCompositeNode *topNode)
0030 {
0031   Fun4AllServer *se = Fun4AllServer::instance();
0032   if (m_CopyRunHeaderFlag)
0033   {
0034     CopyRunHeader(topNode, se->topNode());
0035   }
0036   if (m_CopyEventHeaderFlag)
0037   {
0038     CreateEventHeader(topNode, se->topNode());
0039   }
0040   if (m_CopyCentralityInfoFlag)
0041   {
0042     CreateCentralityInfo(topNode, se->topNode());
0043   }
0044   if (m_CopyGlobalVertexMapFlag)
0045   {
0046     CreateGlobalVertexMap(topNode, se->topNode());
0047   }
0048   if (m_CopyMinimumBiasInfoFlag)
0049   {
0050     CreateMinimumBiasInfo(topNode, se->topNode());
0051   }
0052   if (m_CopyMbdOutFlag)
0053   {
0054     CreateMbdOut(topNode, se->topNode());
0055   }
0056   if (m_CopySyncObjectFlag)
0057   {
0058     CreateSyncObject(topNode, se->topNode());
0059   }
0060 
0061   return Fun4AllReturnCodes::EVENT_OK;
0062 }
0063 
0064 //____________________________________________________________________________..
0065 int CopyIODataNodes::process_event(PHCompositeNode *topNode)
0066 {
0067   Fun4AllServer *se = Fun4AllServer::instance();
0068   if (m_CopyEventHeaderFlag)
0069   {
0070     CopyEventHeader(topNode, se->topNode());
0071   }
0072   if (m_CopyCentralityInfoFlag)
0073   {
0074     CopyCentralityInfo(topNode, se->topNode());
0075   }
0076   if (m_CopyGlobalVertexMapFlag)
0077   {
0078     CopyGlobalVertexMap(topNode, se->topNode());
0079   }
0080   if (m_CopyMinimumBiasInfoFlag)
0081   {
0082     CopyMinimumBiasInfo(topNode, se->topNode());
0083   }
0084   if (m_CopyMbdOutFlag)
0085   {
0086     CopyMbdOut(topNode, se->topNode());
0087   }
0088   if (m_CopySyncObjectFlag)
0089   {
0090     CopySyncObject(topNode, se->topNode());
0091   }
0092   return Fun4AllReturnCodes::EVENT_OK;
0093 }
0094 
0095 void CopyIODataNodes::CopyRunHeader(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0096 {
0097   RunHeader *from_runheader = findNode::getClass<RunHeader>(from_topNode, "RunHeader");
0098   if (!from_runheader)
0099   {
0100     std::cout << "Could not locate RunHeader on " << from_topNode->getName() << std::endl;
0101     m_CopyRunHeaderFlag = false;
0102     return;
0103   }
0104   RunHeader *to_runheader = findNode::getClass<RunHeader>(to_topNode, "RunHeader");
0105   if (!to_runheader)
0106   {
0107     PHNodeIterator iter(to_topNode);
0108     PHCompositeNode *runNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "RUN"));
0109     if (!runNode)
0110     {
0111       runNode = new PHCompositeNode("RUN");
0112       to_topNode->addNode(runNode);
0113     }
0114     to_runheader = dynamic_cast<RunHeader *>(from_runheader->CloneMe());
0115     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_runheader, "RunHeader", "PHObject");
0116     runNode->addNode(newNode);
0117     if (Verbosity() > 0)
0118     {
0119       std::cout << "From RunHeader identify()" << std::endl;
0120       from_runheader->identify();
0121       std::cout << "To RunHeader identify()" << std::endl;
0122       to_runheader->identify();
0123     }
0124   }
0125   return;
0126 }
0127 
0128 void CopyIODataNodes::CreateCentralityInfo(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0129 {
0130   CentralityInfo *from_centralityinfo = findNode::getClass<CentralityInfo>(from_topNode, "CentralityInfo");
0131   if (!from_centralityinfo)
0132   {
0133     std::cout << "Could not locate CentralityInfo on " << from_topNode->getName() << std::endl;
0134     m_CopyCentralityInfoFlag = false;
0135     return;
0136   }
0137   CentralityInfo *to_centralityinfo = findNode::getClass<CentralityInfo>(to_topNode, "CentralityInfo");
0138   if (!to_centralityinfo)
0139   {
0140     PHNodeIterator iter(to_topNode);
0141     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0142     if (!dstNode)
0143     {
0144       dstNode = new PHCompositeNode("DST");
0145       to_topNode->addNode(dstNode);
0146     }
0147     to_centralityinfo = dynamic_cast<CentralityInfo *>(from_centralityinfo->CloneMe());
0148     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_centralityinfo, "CentralityInfo", "PHObject");
0149     dstNode->addNode(newNode);
0150   }
0151   return;
0152 }
0153 
0154 void CopyIODataNodes::CopyCentralityInfo(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0155 {
0156   CentralityInfo *from_centralityinfo = findNode::getClass<CentralityInfo>(from_topNode, "CentralityInfo");
0157   CentralityInfo *to_centralityinfo = findNode::getClass<CentralityInfo>(to_topNode, "CentralityInfo");
0158   from_centralityinfo->CopyTo(to_centralityinfo);
0159   if (Verbosity() > 0)
0160   {
0161     std::cout << "From CentralityInfo identify()" << std::endl;
0162     from_centralityinfo->identify();
0163     std::cout << "To CentralityInfo identify()" << std::endl;
0164     to_centralityinfo->identify();
0165   }
0166 
0167   return;
0168 }
0169 
0170 void CopyIODataNodes::CreateEventHeader(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0171 {
0172   EventHeader *from_eventheader = findNode::getClass<EventHeader>(from_topNode, "EventHeader");
0173   if (!from_eventheader)
0174   {
0175     std::cout << "Could not locate EventHeader on " << from_topNode->getName() << std::endl;
0176     m_CopyEventHeaderFlag = false;
0177     return;
0178   }
0179   EventHeader *to_eventheader = findNode::getClass<EventHeader>(to_topNode, "EventHeader");
0180   if (!to_eventheader)
0181   {
0182     PHNodeIterator iter(to_topNode);
0183     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0184     if (!dstNode)
0185     {
0186       dstNode = new PHCompositeNode("DST");
0187       to_topNode->addNode(dstNode);
0188     }
0189     to_eventheader = dynamic_cast<EventHeader *>(from_eventheader->CloneMe());
0190     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_eventheader, "EventHeader", "PHObject");
0191     dstNode->addNode(newNode);
0192   }
0193   return;
0194 }
0195 
0196 void CopyIODataNodes::CopyEventHeader(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0197 {
0198   EventHeader *from_eventheader = findNode::getClass<EventHeader>(from_topNode, "EventHeader");
0199   EventHeader *to_eventheader = findNode::getClass<EventHeader>(to_topNode, "EventHeader");
0200   from_eventheader->CopyTo(to_eventheader);
0201   if (Verbosity() > 0)
0202   {
0203     std::cout << "From EventHeader identify()" << std::endl;
0204     from_eventheader->identify();
0205     std::cout << "To EventHeader identify()" << std::endl;
0206     to_eventheader->identify();
0207   }
0208 
0209   return;
0210 }
0211 
0212 void CopyIODataNodes::CreateGlobalVertexMap(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0213 {
0214   GlobalVertexMap *from_globalvertexmap = findNode::getClass<GlobalVertexMap>(from_topNode, "GlobalVertexMap");
0215   if (!from_globalvertexmap)
0216   {
0217     std::cout << "Could not locate GlobalVertexMap on " << from_topNode->getName() << std::endl;
0218     m_CopyGlobalVertexMapFlag = false;
0219     return;
0220   }
0221   GlobalVertexMap *to_globalvertexmap = findNode::getClass<GlobalVertexMap>(to_topNode, "GlobalVertexMap");
0222   if (!to_globalvertexmap)
0223   {
0224     PHNodeIterator iter(to_topNode);
0225     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0226     if (!dstNode)
0227     {
0228       dstNode = new PHCompositeNode("DST");
0229       to_topNode->addNode(dstNode);
0230     }
0231     to_globalvertexmap = new GlobalVertexMapv1();
0232     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_globalvertexmap, "GlobalVertexMap", "PHObject");
0233     dstNode->addNode(newNode);
0234   }
0235   return;
0236 }
0237 
0238 void CopyIODataNodes::CopyGlobalVertexMap(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0239 {
0240   GlobalVertexMap *from_globalvertexmap = findNode::getClass<GlobalVertexMap>(from_topNode, "GlobalVertexMap");
0241   GlobalVertexMap *to_globalvertexmap = findNode::getClass<GlobalVertexMap>(to_topNode, "GlobalVertexMap");
0242   from_globalvertexmap->CopyTo(to_globalvertexmap);
0243   if (Verbosity() > 0)
0244   {
0245     std::cout << "From GlobalVertexMap identify()" << std::endl;
0246     from_globalvertexmap->identify();
0247     std::cout << "To GlobalVertexMap identify()" << std::endl;
0248     to_globalvertexmap->identify();
0249   }
0250 
0251   return;
0252 }
0253 
0254 void CopyIODataNodes::CreateMinimumBiasInfo(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0255 {
0256   MinimumBiasInfo *from_minimumbiasinfo = findNode::getClass<MinimumBiasInfo>(from_topNode, "MinimumBiasInfo");
0257   if (!from_minimumbiasinfo)
0258   {
0259     std::cout << "Could not locate MinimumBiasInfo on " << from_topNode->getName() << std::endl;
0260     m_CopyMinimumBiasInfoFlag = false;
0261     return;
0262   }
0263   MinimumBiasInfo *to_minimumbiasinfo = findNode::getClass<MinimumBiasInfo>(to_topNode, "MinimumBiasInfo");
0264   if (!to_minimumbiasinfo)
0265   {
0266     PHNodeIterator iter(to_topNode);
0267     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0268     if (!dstNode)
0269     {
0270       dstNode = new PHCompositeNode("DST");
0271       to_topNode->addNode(dstNode);
0272     }
0273     to_minimumbiasinfo = dynamic_cast<MinimumBiasInfo *>(from_minimumbiasinfo->CloneMe());
0274     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_minimumbiasinfo, "MinimumBiasInfo", "PHObject");
0275     dstNode->addNode(newNode);
0276   }
0277   return;
0278 }
0279 
0280 void CopyIODataNodes::CopyMinimumBiasInfo(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0281 {
0282   MinimumBiasInfo *from_minimumbiasinfo = findNode::getClass<MinimumBiasInfo>(from_topNode, "MinimumBiasInfo");
0283   MinimumBiasInfo *to_minimumbiasinfo = findNode::getClass<MinimumBiasInfo>(to_topNode, "MinimumBiasInfo");
0284   from_minimumbiasinfo->CopyTo(to_minimumbiasinfo);
0285   if (Verbosity() > 0)
0286   {
0287     std::cout << "From MinimumBiasInfo identify()" << std::endl;
0288     from_minimumbiasinfo->identify();
0289     std::cout << "To MinimumBiasInfo identify()" << std::endl;
0290     to_minimumbiasinfo->identify();
0291   }
0292 
0293   return;
0294 }
0295 
0296 void CopyIODataNodes::CreateMbdOut(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0297 {
0298 
0299   MbdOut *from_mbdout = findNode::getClass<MbdOut>(from_topNode, "MbdOut");
0300   if (!from_mbdout)
0301   {
0302     std::cout << "Could not locate MbdOut no " << from_topNode->getName() << std::endl;
0303     m_CopyMbdOutFlag = false;
0304     return;
0305   }
0306   MbdOut *to_mbdout = findNode::getClass<MbdOut>(to_topNode, "MbdOut");
0307   if (!to_mbdout)
0308   {
0309     PHNodeIterator iter(to_topNode);
0310     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0311     if (!dstNode)
0312     {
0313       dstNode = new PHCompositeNode("DST");
0314       to_topNode->addNode(dstNode);
0315     }
0316 
0317     PHNodeIterator dstiter(dstNode);
0318     PHCompositeNode *mbdNode = dynamic_cast<PHCompositeNode *>(dstiter.findFirst("PHCompositeNode", "MBD"));
0319     if (!mbdNode)
0320     {
0321       mbdNode = new PHCompositeNode("MBD");
0322       dstNode->addNode(mbdNode);
0323     }
0324 
0325     to_mbdout = dynamic_cast<MbdOut *>(from_mbdout->CloneMe());
0326     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_mbdout, "MbdOut", "PHObject");
0327     mbdNode->addNode(newNode);
0328   }
0329   return;
0330 
0331 }
0332 
0333 void CopyIODataNodes::CopyMbdOut(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0334 {
0335   MbdOut *from_mbdout = findNode::getClass<MbdOut>(from_topNode, "MbdOut");
0336   MbdOut *to_mbdout = findNode::getClass<MbdOut>(to_topNode, "MbdOut");
0337   from_mbdout->CopyTo(to_mbdout);
0338   if (Verbosity() > 0)
0339   {
0340     std::cout << "From MbdOut identify()" << std::endl;
0341     from_mbdout->identify();
0342     std::cout << "To MbdOut identify()" << std::endl;
0343     to_mbdout->identify();
0344   }
0345   
0346   return;
0347 }
0348 
0349 void CopyIODataNodes::CreateSyncObject(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0350 {
0351   SyncObject *from_syncobject = findNode::getClass<SyncObject>(from_topNode, "Sync");
0352   if (!from_syncobject)
0353   {
0354     std::cout << "Could not locate SyncObject on " << from_topNode->getName() << std::endl;
0355     m_CopySyncObjectFlag = false;
0356     return;
0357   }
0358   SyncObject *to_syncobject = findNode::getClass<SyncObject>(to_topNode, "Sync");
0359   if (!to_syncobject)
0360   {
0361     PHNodeIterator iter(to_topNode);
0362     PHCompositeNode *dstNode = dynamic_cast<PHCompositeNode *>(iter.findFirst("PHCompositeNode", "DST"));
0363     if (!dstNode)
0364     {
0365       dstNode = new PHCompositeNode("DST");
0366       to_topNode->addNode(dstNode);
0367     }
0368     to_syncobject = dynamic_cast<SyncObject *>(from_syncobject->CloneMe());
0369     PHIODataNode<PHObject> *newNode = new PHIODataNode<PHObject>(to_syncobject, "SyncObject", "PHObject");
0370     dstNode->addNode(newNode);
0371   }
0372   return;
0373 }
0374 
0375 void CopyIODataNodes::CopySyncObject(PHCompositeNode *from_topNode, PHCompositeNode *to_topNode)
0376 {
0377   SyncObject *from_syncobject = findNode::getClass<SyncObject>(from_topNode, "Sync");
0378   SyncObject *to_syncobject = findNode::getClass<SyncObject>(to_topNode, "Sync");
0379   to_syncobject = from_syncobject;
0380   if (Verbosity() > 0)
0381   {
0382     std::cout << "From Syncobject identify()" << std::endl;
0383     from_syncobject->identify();
0384     std::cout << "To Syncobject identify()" << std::endl;
0385     to_syncobject->identify();
0386   }
0387   return;
0388 }