diff --git a/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetDescrDict.h b/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetDescrDict.h index 8ad54288ae61caca55627e883eadcfbd13b60e34..ba1fbebed567b7b1be426f0e06141233286269c9 100644 --- a/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetDescrDict.h +++ b/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetDescrDict.h @@ -11,6 +11,7 @@ #include "FaserDetDescr/FaserRegion.h" #include "FaserDetDescr/FaserDetectorIDBase.h" +#include "FaserDetDescr/FaserDetectorID.h" namespace FaserDetDescr { // Athena namespace autoloading trigger for ROOT6 diff --git a/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetectorID.h b/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetectorID.h index ab6a59775601757775deb7dedabf2bde735f3096..695819aae7aeb549892a20323fb8a245fc5eebca 100644 --- a/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetectorID.h +++ b/DetectorDescription/FaserDetDescr/FaserDetDescr/FaserDetectorID.h @@ -265,8 +265,8 @@ private: int init_neighbors(void); size_type m_faser_region_index; - // size_type m_DET_INDEX; - // size_type m_SUBDET_INDEX; + size_type m_SUBDET_INDEX; + size_type m_PART_INDEX; size_type m_STATION_INDEX; size_type m_PLANE_INDEX; size_type m_MODULE_INDEX; @@ -307,8 +307,8 @@ CLASS_DEF(FaserDetectorID, 125694213, 1) //---------------------------------------------------------------------------- inline Identifier FaserDetectorID::module_id ( int station, - int plane, - int module ) const + int plane, + int module ) const { // Build identifier @@ -324,19 +324,21 @@ FaserDetectorID::module_id ( int station, //---------------------------------------------------------------------------- inline Identifier -VetoID::station_id ( const Identifier& plate_id ) const +FaserDetectorID::module_id ( const Identifier& submodule_id ) const { - Identifier result(plate_id); + Identifier result(submodule_id); // Reset the plate and pmt fields - m_plate_impl.reset(result); - m_pmt_impl.reset(result); + m_submodule_impl.reset(result); + m_sensor_impl.reset(result); return (result); } //---------------------------------------------------------------------------- inline Identifier -VetoID::plate_id ( int station, - int plate ) const +FaserDetectorID::submodule_id ( int station, + int plane, + int module, + int submodule ) const { // Build identifier Identifier result((Identifier::value_type)0); @@ -345,89 +347,107 @@ VetoID::plate_id ( int station, m_scint_impl.pack (scint_field_value(), result); m_veto_impl.pack (veto_field_value(), result); m_station_impl.pack (station, result); - m_plate_impl.pack (plate, result); + m_plane_impl.pack (plane, result); + m_module_impl.pack (module, result); + m_submodule_impl.pack(submodule, result); return result; } //---------------------------------------------------------------------------- inline Identifier -VetoID::plate_id ( const Identifier& pmt_id ) const +FaserDetectorID::submodule_id ( const Identifier& sensor_id ) const { - Identifier result(pmt_id); + Identifier result(sensor_id); // reset the strip field - m_pmt_impl.reset(result); + m_sensor_impl.reset(result); return (result); } inline IdentifierHash -VetoID::plate_hash (Identifier plate_id) const +FaserDetectorID::submodule_hash (Identifier submodule_id) const { - id_vec_it it = std::lower_bound(m_plate_vec.begin(), - m_plate_vec.end(), - plate_id); - // Require that plate_id matches the one in vector - if (it != m_plate_vec.end() && plate_id == (*it)) { - return (it - m_plate_vec.begin()); + id_vec_it it = std::lower_bound(m_submodule_vec.begin(), + m_submodule_vec.end(), + submodule_id); + // Require that submodule_id matches the one in vector + if (it != m_submodule_vec.end() && submodule_id == (*it)) { + return (it - m_submodule_vec.begin()); } IdentifierHash result; return (result); // return hash in invalid state } - - //---------------------------------------------------------------------------- inline Identifier -VetoID::pmt_id ( int station, - int plate, - int pmt) const +FaserDetectorID::sensor_id ( int station, + int plane, + int module, + int submodule, + int sensor ) const { // Build identifier Identifier result((Identifier::value_type)0); // Pack fields independently m_scint_impl.pack (scint_field_value(), result); - m_veto_impl.pack (veto_field_value(), result); - m_station_impl.pack (station, result); - m_plate_impl.pack (plate, result); - m_pmt_impl.pack (pmt, result); + m_veto_impl.pack (veto_field_value(), result); + m_station_impl.pack (station, result); + m_plane_impl.pack (plane, result); + m_module_impl.pack (module, result); + m_submodule_impl.pack(submodule, result); + m_sensor_impl.pack (sensor, result); return result; } //---------------------------------------------------------------------------- inline Identifier -VetoID::pmt_id ( const Identifier& plate_id, int pmt ) const +FaserDetectorID::sensor_id ( const Identifier& submodule_id, int sensor ) const { // Build identifier - Identifier result(plate_id); + Identifier result(submodule_id); - // Reset strip and then add in value - m_pmt_impl.reset (result); - m_pmt_impl.pack (pmt, result); + // Reset sensor and then add in value + m_sensor_impl.reset (result); + m_sensor_impl.pack (sensor, result); return result; } + //---------------------------------------------------------------------------- inline int -VetoID::station (const Identifier& id) const +FaserDetectorID::station (const Identifier& id) const { return (m_station_impl.unpack(id)); } //---------------------------------------------------------------------------- inline int -VetoID::plate (const Identifier& id) const +FaserDetectorID::plane (const Identifier& id) const +{ + return (m_plane_impl.unpack(id)); +} +//---------------------------------------------------------------------------- +inline int +FaserDetectorID::module (const Identifier& id) const +{ + return (m_module_impl.unpack(id)); +} + +//---------------------------------------------------------------------------- +inline int +FaserDetectorID::submodule (const Identifier& id) const { - return (m_plate_impl.unpack(id)); + return (m_submodule_impl.unpack(id)); } //---------------------------------------------------------------------------- inline int -VetoID::pmt (const Identifier& id) const +FaserDetectorID::sensor (const Identifier& id) const { - return (m_pmt_impl.unpack(id)); + return (m_sensor_impl.unpack(id)); } -#endif // SCINTIDENTIFIER_VETOID_H +#endif // FASERDETDESCR_FASERDETECTORID_H diff --git a/DetectorDescription/FaserDetDescr/src/FaserDetectorID.cxx b/DetectorDescription/FaserDetDescr/src/FaserDetectorID.cxx index c1851a07a594f5fc11f0dfd57988f23caf2a2595..ebfba7692d04d3e54538db78bc1a2e53e533918b 100644 --- a/DetectorDescription/FaserDetDescr/src/FaserDetectorID.cxx +++ b/DetectorDescription/FaserDetDescr/src/FaserDetectorID.cxx @@ -10,7 +10,7 @@ //<<<<<< INCLUDES >>>>>> #include "GaudiKernel/MsgStream.h" -#include "ScintIdentifier/VetoID.h" +#include "FaserDetDescr/FaserDetectorID.h" #include "Identifier/IdentifierHash.h" #include "IdDict/IdDictDefs.h" #include <set> @@ -33,29 +33,31 @@ ///////////////////////////////////////////////////////////////////////////// -VetoID::VetoID(void) +FaserDetectorID::FaserDetectorID(void) : - m_veto_region_index(0), - m_SCINT_INDEX(0), - m_VETO_INDEX(1), + m_faser_region_index(0), + m_SUBDET_INDEX(0), + m_PART_INDEX(1), m_STATION_INDEX(2), - m_PLATE_INDEX(3), - m_PMT_INDEX(4), - m_plate_hash_max(0), - m_pmt_hash_max(0), + m_PLANE_INDEX(3), + m_MODULE_INDEX(4), + m_SUBMODULE_INDEX(5), + m_SENSOR_INDEX(6), + m_submodule_hash_max(0), + m_sensor_hash_max(0), m_dict(0) { } int -VetoID::init_hashes(void) +FaserDetectorID::init_hashes(void) { // // create a vector(s) to retrieve the hashes for compact ids. For - // the moment, we implement a hash for plates but NOT for pmts + // the moment, we implement a hash for submodules but NOT for sensors // - MsgStream log(m_msgSvc, "VetoID"); + MsgStream log(m_msgSvc, "FaserDetectorID"); // wafer hash m_plate_hash_max = m_full_plate_range.cardinality(); m_plate_vec.resize(m_plate_hash_max); @@ -70,7 +72,7 @@ VetoID::init_hashes(void) Identifier id = plate_id(exp_id[m_STATION_INDEX], exp_id[m_PLATE_INDEX]); if(!(ids.insert(id)).second) { - log << MSG::ERROR << " VetoID::init_hashes " + log << MSG::ERROR << " FaserDetectorID::init_hashes " << " Error: duplicated id for plate id. nid " << nids << " compact id " << id.getString() << " id " << (std::string)exp_id << endmsg; @@ -80,7 +82,7 @@ VetoID::init_hashes(void) } } if(ids.size() != m_plate_hash_max) { - log << MSG::ERROR << " VetoID::init_hashes " + log << MSG::ERROR << " FaserDetectorID::init_hashes " << " Error: set size NOT EQUAL to hash max. size " << ids.size() << " hash max " << m_plate_hash_max << endmsg; @@ -103,9 +105,9 @@ VetoID::init_hashes(void) int -VetoID::initialize_from_dictionary(const IdDictMgr& dict_mgr) +FaserDetectorID::initialize_from_dictionary(const IdDictMgr& dict_mgr) { - MsgStream log(m_msgSvc, "VetoID"); + MsgStream log(m_msgSvc, "FaserDetectorID"); log << MSG::INFO << "Initialize from dictionary" << endmsg; // Check whether this helper should be reinitialized @@ -130,7 +132,7 @@ VetoID::initialize_from_dictionary(const IdDictMgr& dict_mgr) m_dict = dict_mgr.find_dictionary ("Scintillator"); if(!m_dict) { - log << MSG::ERROR << " VetoID::initialize_from_dict - cannot access Scintillator dictionary " << endmsg; + log << MSG::ERROR << " FaserDetectorID::initialize_from_dict - cannot access Scintillator dictionary " << endmsg; return 1; } @@ -203,31 +205,33 @@ VetoID::initialize_from_dictionary(const IdDictMgr& dict_mgr) } int -VetoID::initLevelsFromDict() +FaserDetectorID::initLevelsFromDict() { - MsgStream log(m_msgSvc, "VetoID"); + MsgStream log(m_msgSvc, "FaserDetectorID"); if(!m_dict) { - log << MSG::ERROR << " VetoID::initLevelsFromDict - dictionary NOT initialized " << endmsg; + log << MSG::ERROR << " FaserDetectorID::initLevelsFromDict - dictionary NOT initialized " << endmsg; return (1); } // Find out which identifier field corresponds to each level. Use // names to find each field/leve. - m_SCINT_INDEX = 999; - m_VETO_INDEX = 999; + m_SUBDET_INDEX = 999; + m_PART_INDEX = 999; m_STATION_INDEX = 999; - m_PLATE_INDEX = 999; - m_PMT_INDEX = 999; + m_PLANE_INDEX = 999; + m_MODULE_INDEX = 999; + m_SUBMODULE_INDEX = 999; + m_SENSOR_INDEX = 999; // Save index to a Veto region for unpacking ExpandedIdentifier id; id << scint_field_value() << veto_field_value(); if (m_dict->find_region(id, m_veto_region_index)) { - log << MSG::ERROR << "VetoID::initLevelsFromDict - unable to find veto region index: id, reg " + log << MSG::ERROR << "FaserDetectorID::initLevelsFromDict - unable to find veto region index: id, reg " << (std::string)id << " " << m_veto_region_index << endmsg; return (1);