Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include "RawTowerGeomContainerv1.h"
0002 
0003 #include "RawTowerGeom.h"
0004 
0005 #include <cassert>
0006 #include <cstdlib>
0007 #include <iostream>
0008 #include <map>
0009 #include <utility>
0010 
0011 RawTowerGeomContainerv1::RawTowerGeomContainerv1(RawTowerDefs::CalorimeterId caloid)
0012   : _caloid(caloid)
0013 {
0014 }
0015 
0016 RawTowerGeomContainerv1::~RawTowerGeomContainerv1()
0017 {
0018   Reset();  // make sure everything is deleted
0019 }
0020 
0021 RawTowerGeomContainerv1::ConstRange
0022 RawTowerGeomContainerv1::get_tower_geometries() const
0023 {
0024   return std::make_pair<ConstIterator, ConstIterator>(_geoms.begin(), _geoms.end());
0025 }
0026 
0027 RawTowerGeomContainerv1::Range
0028 RawTowerGeomContainerv1::get_tower_geometries()
0029 {
0030   return std::make_pair<Iterator, Iterator>(_geoms.begin(), _geoms.end());
0031 }
0032 
0033 RawTowerGeomContainerv1::ConstIterator
0034 RawTowerGeomContainerv1::add_tower_geometry(RawTowerGeom* geo)
0035 {
0036   assert(geo);
0037 
0038   if (RawTowerDefs::decode_caloid(geo->get_id()) != get_calorimeter_id())
0039   {
0040     std::cout << "RawTowerGeomContainerv1::add_tower_geometry - Fatal Error - "
0041                  "attempting to add tower geometry with id = "
0042               << geo->get_id()
0043               << " with CaloID = " << RawTowerDefs::decode_caloid(geo->get_id())
0044               << " to this container of CaloID = " << get_calorimeter_id() << ".";
0045     geo->identify(std::cout);
0046     exit(2);
0047   }
0048 
0049   Iterator it = _geoms.find(geo->get_id());
0050   if (it != _geoms.end())
0051   {
0052     std::cout
0053         << "RawTowerGeomContainerv1::add_tower_geometry - WARNING - replace tower geometry for tower #"
0054         << geo->get_id() << ". This Old tower will be deleted: ";
0055     it->second->identify(std::cout);
0056 
0057     delete it->second;
0058     _geoms.erase(it);
0059   }
0060 
0061   _geoms[geo->get_id()] = geo;
0062   return _geoms.find(geo->get_id());
0063 }
0064 
0065 RawTowerGeom*
0066 RawTowerGeomContainerv1::get_tower_geometry(RawTowerDefs::keytype key)
0067 {
0068   Iterator it = _geoms.find(key);
0069   if (it != _geoms.end())
0070   {
0071     return it->second;
0072   }
0073   return nullptr;
0074 }
0075 
0076 int RawTowerGeomContainerv1::isValid() const
0077 {
0078   return (!_geoms.empty());
0079 }
0080 
0081 void RawTowerGeomContainerv1::Reset()
0082 {
0083   while (_geoms.begin() != _geoms.end())
0084   {
0085     delete _geoms.begin()->second;
0086     _geoms.erase(_geoms.begin());
0087   }
0088 }
0089 
0090 void RawTowerGeomContainerv1::identify(std::ostream& os) const
0091 {
0092   os << "RawTowerGeomContainerv1, number of tower geometries: " << size()
0093      << std::endl;
0094 }