File indexing completed on 2025-08-05 08:17:42
0001 #include "PHG4BlockGeomContainer.h"
0002
0003 #include "PHG4BlockGeom.h"
0004
0005 #include <cmath>
0006
0007 using namespace std;
0008
0009 PHG4BlockGeomContainer::PHG4BlockGeomContainer()
0010 : _magfield(NAN)
0011 {
0012 }
0013
0014 PHG4BlockGeomContainer::~PHG4BlockGeomContainer()
0015 {
0016 while (_layergeoms.begin() != _layergeoms.end())
0017 {
0018 delete _layergeoms.begin()->second;
0019 _layergeoms.erase(_layergeoms.begin());
0020 }
0021 return;
0022 }
0023
0024 void PHG4BlockGeomContainer::identify(std::ostream &os) const
0025 {
0026 os << "mag field: " << _magfield << endl;
0027 os << "number of layers: " << _layergeoms.size() << endl;
0028 map<int, PHG4BlockGeom *>::const_iterator iter;
0029 for (iter = _layergeoms.begin(); iter != _layergeoms.end(); ++iter)
0030 {
0031 (iter->second)->identify(os);
0032 }
0033 return;
0034 }
0035
0036 int PHG4BlockGeomContainer::AddLayerGeom(const int i, PHG4BlockGeom *mygeom)
0037 {
0038 if (_layergeoms.find(i) != _layergeoms.end())
0039 {
0040 cout << "layer " << i << " already added to PHBlockGeomContainer" << endl;
0041 return -1;
0042 }
0043 mygeom->set_layer(i);
0044 _layergeoms[i] = mygeom;
0045 return 0;
0046 }
0047
0048 int PHG4BlockGeomContainer::AddLayerGeom(PHG4BlockGeom *mygeom)
0049 {
0050 int layer = mygeom->get_layer();
0051 if (_layergeoms.find(layer) != _layergeoms.end())
0052 {
0053 cout << "layer " << layer << " already added to PHBlockGeomContainer" << endl;
0054 return -1;
0055 }
0056 _layergeoms[layer] = mygeom;
0057 return 0;
0058 }
0059
0060 PHG4BlockGeom *
0061 PHG4BlockGeomContainer::GetLayerGeom(const int i)
0062 {
0063 map<int, PHG4BlockGeom *>::const_iterator iter = _layergeoms.find(i);
0064 if (iter != _layergeoms.end())
0065 {
0066 return iter->second;
0067 }
0068 cout << "Could not locate layer " << i << " in PHG4BlockGeomContainer" << endl;
0069 return nullptr;
0070 }