Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include "TowerInfoDeadHotMask.h"
0002 
0003 #include <calobase/TowerInfo.h>
0004 #include <calobase/TowerInfoContainer.h>
0005 #include <calobase/TowerInfoDefs.h>
0006 #include <calobase/RawTowerDeadMap.h>
0007 #include <calobase/RawTowerGeomContainer.h>
0008 #include <calobase/RawTowerGeom.h>
0009 
0010 #include <fun4all/Fun4AllBase.h>
0011 #include <fun4all/Fun4AllReturnCodes.h>
0012 #include <fun4all/SubsysReco.h>
0013 
0014 #include <phool/getClass.h>
0015 
0016 #include <fstream>
0017 #include <iostream>
0018 #include <set>                               // for _Rb_tree_const_iterator
0019 #include <sstream>
0020 #include <stdexcept>
0021 #include <string>
0022 
0023 TowerInfoDeadHotMask::TowerInfoDeadHotMask(const std::string &name)
0024   : SubsysReco(name)
0025   , m_detector("NONE")
0026   , m_deadMap(nullptr)
0027   , m_calibTowerInfos(nullptr)
0028   , m_geometry(nullptr)
0029 {
0030 }
0031 
0032 int TowerInfoDeadHotMask::InitRun(PHCompositeNode *topNode)
0033 {
0034   CreateNodeTree(topNode);
0035 
0036   return Fun4AllReturnCodes::EVENT_OK;
0037 }
0038 
0039 int TowerInfoDeadHotMask::process_event(PHCompositeNode * /*topNode*/)
0040 {
0041   if (Verbosity() >= VERBOSITY_SOME)
0042   {
0043     std::cout << Name() << "::" << m_detector << "::process_event - Entry" << std::endl;
0044   }
0045 
0046   RawTowerDeadMap::Map map = m_deadMap->getDeadTowers();
0047 
0048   RawTowerDeadMap::Map::iterator itr;
0049 
0050   for(itr = map.begin(); itr != map.end(); ++itr)
0051   {
0052     int iphi = m_geometry->get_tower_geometry(*itr)->get_binphi();
0053     int ieta = m_geometry->get_tower_geometry(*itr)->get_bineta();
0054     unsigned int key = TowerInfoDefs::encode_emcal(ieta, iphi);
0055     m_calibTowerInfos->get_tower_at_key(key)->set_energy(0.);
0056     m_calibTowerInfos->get_tower_at_key(key)->set_time(-10);
0057   }
0058 
0059   return Fun4AllReturnCodes::EVENT_OK;
0060 }
0061 
0062 void TowerInfoDeadHotMask::CreateNodeTree(PHCompositeNode *topNode)
0063 {
0064   m_calibTowerInfos = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_" + m_detector);
0065   if (!m_calibTowerInfos)
0066   {
0067     std::cout << Name() << "::" << m_detector << "::" << "CreateNodeTree " << "No calibrated " << m_detector << " tower info found while in TowerInfoDeadHotMask, can't proceed!!!" << std::endl;
0068     throw std::runtime_error("failed to find TOWERINFO_CALIB node in TowerInfoDeadHotMask::CreateNodeTree");
0069   }
0070 
0071   std::string towergeomnodename = "TOWERGEOM_" + m_detector;
0072   m_geometry = findNode::getClass<RawTowerGeomContainer>(topNode, towergeomnodename);
0073   if (!m_geometry)
0074   {
0075     std::cout << Name() << "::" << m_detector << "::" << "CreateNodeTree" << ": Could not find node " << towergeomnodename << std::endl;
0076     throw std::runtime_error("failed to find TOWERGEOM node in TowerInfoDeadHotMask::CreateNodeTree");
0077   }
0078 
0079   const std::string deadMapName = "DEADMAP_" + m_detector;
0080   m_deadMap = findNode::getClass<RawTowerDeadMap>(topNode, deadMapName);
0081   if (m_deadMap)
0082   {
0083     std::cout << Name() << "::" << m_detector << "::" << "CreateNodeTree" << " use dead map: ";
0084     m_deadMap->identify();
0085   }
0086 }
0087 
0088 int TowerInfoDeadHotMask::End(PHCompositeNode * /*topNode*/)
0089 {
0090   return Fun4AllReturnCodes::EVENT_OK;
0091 }