#include "ICOMETLog.hxx" #include "IGeometryId.hxx" #include "COMETGeomId.hxx" #include "COMETGeomIdDef.hxx" #include "IECALGeomId.hxx" bool COMET::GeomId::ECAL::IsECAL(IGeometryId inputId) { ISettableGeometryId id(inputId); return (COMET::GeomId::Def::kECAL == id.GetField(COMET::GeomId::Def::kDetectorIdMSB, COMET::GeomId::Def::kDetectorIdLSB)); } bool COMET::GeomId::ECAL::IsCrystal(IGeometryId inputId) { if(not IsECAL(inputId)) return false; ISettableGeometryId id(inputId); return id.GetField(COMET::GeomId::Def::ECAL::kCrystalMSB, COMET::GeomId::Def::ECAL::kCrystalLSB)? true : false; } bool COMET::GeomId::ECAL::IsSameModule(IGeometryId id1, IGeometryId id2) { if(not IsECAL(id1) || not IsECAL(id2)) return false; return ( id1.GetField(COMET::GeomId::Def::ECAL::kBlockModuleMSB, COMET::GeomId::Def::ECAL::kBlockModuleLSB) == id2.GetField(COMET::GeomId::Def::ECAL::kBlockModuleMSB, COMET::GeomId::Def::ECAL::kBlockModuleLSB) ) && ( id1.GetField(COMET::GeomId::Def::ECAL::kCrystalMSB, COMET::GeomId::Def::ECAL::kCrystalLSB) == id2.GetField(COMET::GeomId::Def::ECAL::kCrystalMSB, COMET::GeomId::Def::ECAL::kCrystalLSB) ); } COMET::IGeometryId COMET::GeomId::ECAL::Detector() { ISettableGeometryId id; id.SetField(COMET::GeomId::Def::kECAL, COMET::GeomId::Def::kDetectorIdMSB, COMET::GeomId::Def::kDetectorIdLSB); return id; } COMET::IGeometryId COMET::GeomId::ECAL:: Module(int block, int wrapper, int mod_crystal, int cry_out_wrapper, int cry_in_wrapper, int crystal, int apd, int sensor, int window) { ISettableGeometryId id; id.SetField(COMET::GeomId::Def::kECAL, COMET::GeomId::Def::kDetectorIdMSB, COMET::GeomId::Def::kDetectorIdLSB); id.SetField(block, COMET::GeomId::Def::ECAL::kBlockModuleMSB, COMET::GeomId::Def::ECAL::kBlockModuleLSB); id.SetField(wrapper, COMET::GeomId::Def::ECAL::kBlockWrapperMSB, COMET::GeomId::Def::ECAL::kBlockWrapperLSB); id.SetField(mod_crystal, COMET::GeomId::Def::ECAL::kCrystalModuleMSB, COMET::GeomId::Def::ECAL::kCrystalModuleLSB); id.SetField(cry_out_wrapper, COMET::GeomId::Def::ECAL::kCrystalOuterWrapperMSB, COMET::GeomId::Def::ECAL::kCrystalOuterWrapperLSB); id.SetField(cry_in_wrapper, COMET::GeomId::Def::ECAL::kCrystalInnerWrapperMSB, COMET::GeomId::Def::ECAL::kCrystalInnerWrapperLSB); id.SetField(crystal, COMET::GeomId::Def::ECAL::kCrystalMSB, COMET::GeomId::Def::ECAL::kCrystalLSB); id.SetField(apd, COMET::GeomId::Def::ECAL::kAPDModuleMSB, COMET::GeomId::Def::ECAL::kAPDModuleLSB); id.SetField(sensor, COMET::GeomId::Def::ECAL::kAPDSensorMSB, COMET::GeomId::Def::ECAL::kAPDSensorLSB); id.SetField(window, COMET::GeomId::Def::ECAL::kAPDWindowMSB, COMET::GeomId::Def::ECAL::kAPDWindowLSB); return id; } COMET::IGeometryId COMET::GeomId::ECAL:: Module(int mod_block, int mod_crystal) { ISettableGeometryId id; id.SetField(COMET::GeomId::Def::kECAL, COMET::GeomId::Def::kDetectorIdMSB, COMET::GeomId::Def::kDetectorIdLSB); id.SetField(mod_block, COMET::GeomId::Def::ECAL::kBlockModuleMSB, COMET::GeomId::Def::ECAL::kBlockModuleLSB); id.SetField(1, COMET::GeomId::Def::ECAL::kBlockWrapperMSB, COMET::GeomId::Def::ECAL::kBlockWrapperLSB); id.SetField(mod_crystal, COMET::GeomId::Def::ECAL::kCrystalModuleMSB, COMET::GeomId::Def::ECAL::kCrystalModuleLSB); id.SetField(1, COMET::GeomId::Def::ECAL::kCrystalOuterWrapperMSB, COMET::GeomId::Def::ECAL::kCrystalOuterWrapperLSB); id.SetField(1, COMET::GeomId::Def::ECAL::kCrystalInnerWrapperMSB, COMET::GeomId::Def::ECAL::kCrystalInnerWrapperLSB); id.SetField(1, COMET::GeomId::Def::ECAL::kCrystalMSB, COMET::GeomId::Def::ECAL::kCrystalLSB); id.SetField(0, COMET::GeomId::Def::ECAL::kAPDModuleMSB, COMET::GeomId::Def::ECAL::kAPDModuleLSB); id.SetField(0, COMET::GeomId::Def::ECAL::kAPDSensorMSB, COMET::GeomId::Def::ECAL::kAPDSensorLSB); id.SetField(0, COMET::GeomId::Def::ECAL::kAPDWindowMSB, COMET::GeomId::Def::ECAL::kAPDWindowLSB); return id; } int COMET::GeomId::ECAL::GetBlockId(IGeometryId id) { int block = id.GetField(COMET::GeomId::Def::ECAL::kBlockModuleMSB, COMET::GeomId::Def::ECAL::kBlockModuleLSB); return block; } int COMET::GeomId::ECAL::GetCrystalId(IGeometryId id) { int crystal = id.GetField(COMET::GeomId::Def::ECAL::kCrystalModuleMSB, COMET::GeomId::Def::ECAL::kCrystalModuleLSB); return crystal; }