File indexing completed on 2025-08-05 08:15:04
0001 #include "SaveTowerInfo.h"
0002
0003 #include <calobase/TowerInfov1.h>
0004 #include <calobase/TowerInfoContainerv1.h>
0005 #include <calobase/RawTowerv1.h>
0006 #include <calobase/RawTowerContainer.h>
0007
0008 #include <phool/getClass.h>
0009 #include <phool/PHCompositeNode.h>
0010 #include <phool/phool.h>
0011
0012
0013 #include <fun4all/Fun4AllReturnCodes.h>
0014
0015
0016 #include <cassert>
0017 #include <sstream>
0018 #include <string>
0019
0020 using namespace std;
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 SaveTowerInfo::SaveTowerInfo(const std::string &name)
0032 : SubsysReco(name)
0033 , m_EMCalTowerContainer(0)
0034 {
0035
0036
0037 }
0038
0039
0040
0041
0042 SaveTowerInfo::~SaveTowerInfo()
0043 {
0044
0045 }
0046
0047
0048
0049
0050 int SaveTowerInfo::Init(PHCompositeNode *topNode)
0051 {
0052 if (Verbosity() > 5)
0053 {
0054 cout << "Beginning Init in SaveTowerInfo" << endl;
0055 }
0056
0057 CreateNodeTree(topNode);
0058
0059 return 0;
0060 }
0061
0062
0063
0064
0065
0066 int SaveTowerInfo::process_event(PHCompositeNode *topNode)
0067 {
0068 if (Verbosity() > 5)
0069 {
0070 cout << "Beginning process_event in AnaTutorial" << endl;
0071 }
0072
0073 RawTowerContainer *EMCalRawTowers = findNode::getClass<RawTowerContainer>(topNode, "TOWER_CALIB_CEMC");
0074
0075 if(!EMCalRawTowers)
0076 {
0077 return Fun4AllReturnCodes::DISCARDEVENT;
0078 }
0079
0080 RawTowerContainer::ConstRange tower_range = EMCalRawTowers->getTowers();
0081
0082 int towercounter = 0;
0083
0084 for (RawTowerContainer::ConstIterator tower_iter = tower_range.first; tower_iter != tower_range.second; tower_iter++)
0085 {
0086 TowerInfov1 *towerInfo = new TowerInfov1();
0087 towerInfo->set_time(tower_iter->second->get_time());
0088 towerInfo->set_energy(tower_iter->second->get_energy());
0089 m_EMCalTowerContainer->add(towerInfo,towercounter);
0090 towercounter++;
0091 }
0092
0093 return Fun4AllReturnCodes::EVENT_OK;
0094
0095 }
0096
0097
0098
0099
0100
0101 int SaveTowerInfo::End(PHCompositeNode * )
0102 {
0103 if (Verbosity() > 1)
0104 {
0105 cout << "Ending SaveTowerInfo analysis package" << endl;
0106 }
0107
0108
0109 if (Verbosity() > 1)
0110 {
0111 cout << "Finished SaveTowerInfo analysis package" << endl;
0112 }
0113
0114 return 0;
0115 }
0116
0117 void SaveTowerInfo::CreateNodeTree(PHCompositeNode *topNode)
0118 {
0119 PHNodeIterator nodeItr(topNode);
0120
0121 dst_node = static_cast<PHCompositeNode *>(
0122 nodeItr.findFirst("PHCompositeNode", "DST"));
0123 if (!dst_node)
0124 {
0125 std::cout << "PHComposite node created: DST" << std::endl;
0126 dst_node = new PHCompositeNode("DST");
0127 topNode->addNode(dst_node);
0128 }
0129
0130
0131 m_EMCalTowerContainer = new TowerInfoContainerv1(TowerInfoContainerv1::DETECTOR::EMCAL);
0132 PHIODataNode<PHObject> *emcal_towerNode = new PHIODataNode<PHObject>(m_EMCalTowerContainer, "TOWERS_CEMC", "PHObject");
0133 dst_node->addNode(emcal_towerNode);
0134 }