// // $Id: SiCenter.cpp,v 1.8 2001/02/03 22:53:35 hobbs Exp $ // // File: SiCenter.cpp // Purpose: // Created: 17-JAN-1998 Emanuela Barberis // // $Revision: 1.8 $ // // #include #include "SiCenter.hpp" #include // Global definitions using namespace std; using namespace dgs; bool operator<(const SiCenter& lhs, const SiCenter &rhs) { return lhs.get_position()[2] < rhs.get_position()[2]; } // Constructors/Destructors SiCenter::SiCenter() { } SiCenter::SiCenter(const vector& centrals, const vector& z_positions): _centrals(centrals) { for( int ic=0 ; ic<_centrals.size() ; ic++ ) { CartesianCoordinate myz(0.0,0.0,z_positions[ic]); position_child_at(myz,_centrals[ic]); int nb = _centrals[ic].get_barrel_count(); int nd = _centrals[ic].get_disk_count(); int k; for(k=1; k<=nb; k++) { _barrel_map_centralID.push_back(ic+1); _barrel_map_barrelID.push_back(k); } for( k=1; k<=nd; k++) { _disk_map_centralID.push_back(ic+1); _disk_map_diskID.push_back(k); } } } const list SiCenter::get_children() { list kids; for( int i=0 ; i<_centrals.size() ; i++ ) kids.push_back( &_centrals[i] ); return kids; } std::ostream& operator <<(std::ostream& os, const SiCenter& me) { int i; os << "SiCenter at " << me.get_position() << " has " << me._centrals.size() << " centrals" << endl; for(i=0 ; i