diff --git a/graphics/GeometryJiveXML/CMakeLists.txt b/graphics/GeometryJiveXML/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..50cfbb141f65511bf993f18a53bb5178bc2b0dd5 --- /dev/null +++ b/graphics/GeometryJiveXML/CMakeLists.txt @@ -0,0 +1,36 @@ +################################################################################ +# Package: GeometryJiveXML +################################################################################ + +# Declare the package name: +atlas_subdir( GeometryJiveXML ) + +# Declare the package's dependencies: +atlas_depends_on_subdirs( PUBLIC + Control/AthenaBaseComps + graphics/JiveXML + PRIVATE + Calorimeter/CaloDetDescr + Control/StoreGate + DetectorDescription/GeoModel/GeoModelKernel + GaudiKernel + InnerDetector/InDetDetDescr/InDetIdentifier + InnerDetector/InDetDetDescr/InDetReadoutGeometry + LArCalorimeter/LArGeoModel/LArReadoutGeometry + MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry + MuonSpectrometer/MuonIdHelpers + TileCalorimeter/TileDetDescr ) + +# External dependencies: +find_package( CLHEP ) + +# Component(s) in the package: +atlas_add_component( GeometryJiveXML + src/*.cxx + src/components/*.cxx + INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} + LINK_LIBRARIES ${CLHEP_LIBRARIES} AthenaBaseComps JiveXMLLib CaloDetDescrLib StoreGateLib SGtests GeoModelKernel GaudiKernel InDetIdentifier InDetReadoutGeometry LArReadoutGeometry MuonReadoutGeometry MuonIdHelpersLib TileDetDescr ) + +# Install files from the package: +atlas_install_headers( GeometryJiveXML ) + diff --git a/graphics/GeometryJiveXML/GeometryJiveXML/GeometryWriter.h b/graphics/GeometryJiveXML/GeometryJiveXML/GeometryWriter.h index d70ec8f1cc915e2a0dac9d5e988dd95a6c74cf57..c8417499ea7285a61320e4f1fef2b7252ba9a336 100755 --- a/graphics/GeometryJiveXML/GeometryJiveXML/GeometryWriter.h +++ b/graphics/GeometryJiveXML/GeometryJiveXML/GeometryWriter.h @@ -153,15 +153,15 @@ namespace JiveXML{ /** Pixel detector manager and ID helper */ const InDetDD::SiDetectorManager* m_pixel_manager; - const PixelID * pixelIdHelper; + const PixelID * m_pixelIdHelper; /** Silicon detector manager and ID helper */ const InDetDD::SiDetectorManager* m_silicon_manager; - const SCT_ID * sctIdHelper; + const SCT_ID * m_sctIdHelper; /** TRT detector manager and ID helper */ const InDetDD::TRT_DetectorManager* m_trt_manager; - const TRT_ID * trtIdHelper; + const TRT_ID * m_trtIdHelper; /** Calorimeter detector manager. */ const CaloDetDescrManager* m_calo_manager; diff --git a/graphics/GeometryJiveXML/src/GeometryWriter.cxx b/graphics/GeometryJiveXML/src/GeometryWriter.cxx index b478dbaf4050e489b358eeae83313864cad373e4..2725f3ea4a48a0f875c2f6b7f14c6decbfa795d1 100755 --- a/graphics/GeometryJiveXML/src/GeometryWriter.cxx +++ b/graphics/GeometryJiveXML/src/GeometryWriter.cxx @@ -45,7 +45,7 @@ namespace JiveXML { if ( detStore()->retrieve(m_pixel_manager, "Pixel").isFailure() ){ if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve InDetDD::PixelDetectorManager" << endreq; } else { - if (detStore()->retrieve(pixelIdHelper, "PixelID").isFailure() ){ + if (detStore()->retrieve(m_pixelIdHelper, "PixelID").isFailure() ){ if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve PixelIDHelper" << endreq; } else { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved PixelIDHelper" << endreq; @@ -56,7 +56,7 @@ namespace JiveXML { if ( detStore()->retrieve(m_silicon_manager, "SCT").isFailure() ) { if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve InDetDD::SCT_DetectorManager" << endreq; } else { - if (detStore()->retrieve(sctIdHelper, "SCT_ID").isFailure() ){ + if (detStore()->retrieve(m_sctIdHelper, "SCT_ID").isFailure() ){ if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve SCT_IDHelper" << endreq; } else { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved SCT_IDHelper" << endreq; @@ -68,8 +68,8 @@ namespace JiveXML { if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve InDetDD::TRT_DetectorManager" << endreq; } else { // No SGKey ? As in graphics/VP1/VP1Systems/VP12DGeometrySystems/StoreGateGeometryReader -// if (detStore()->retrieve(trtIdHelper, "TRT_ID").isFailure() ){ - if (detStore()->retrieve(trtIdHelper, "").isFailure() ){ +// if (detStore()->retrieve(m_trtIdHelper, "TRT_ID").isFailure() ){ + if (detStore()->retrieve(m_trtIdHelper, "").isFailure() ){ if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Could not retrieve TRT_IDHelper" << endreq; } else { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved TRT_IDHelper" << endreq; @@ -288,8 +288,8 @@ namespace JiveXML { // Just an extra precaution to avoid crashes. if (!element) continue; - if (element->isBarrel() && pixelIdHelper->phi_module(element->identify()) == 0 - && pixelIdHelper->eta_module(element->identify()) == pixelIdHelper->eta_module_min(element->identify())) { + if (element->isBarrel() && m_pixelIdHelper->phi_module(element->identify()) == 0 + && m_pixelIdHelper->eta_module(element->identify()) == m_pixelIdHelper->eta_module_min(element->identify())) { double rMin = element->rMin(); double rMax = element->rMax(); @@ -304,24 +304,24 @@ namespace JiveXML { zMax += 5; out << "<ABarrelSiliconDetector c=\"" << "PIX" << "\" n=\"" << "Pixel" << "\"" - << " layer=\"" << pixelIdHelper->layer_disk(element->identify()) << "\"" + << " layer=\"" << m_pixelIdHelper->layer_disk(element->identify()) << "\"" << " length=\"" << element->length()/10. << "\"" << " width=\"" << element->width()/10. << "\"" << " thickness=\"" << (rMax - rMin - element->sinTilt()*element->width())/40. << "\"" << " tilt=\"" << 180./M_PI * asin(element->sinTilt()) << "\"" - << " nz=\"" << pixelIdHelper->eta_module_max(element->identify()) - - pixelIdHelper->eta_module_min(element->identify())+1 << "\"" - << " nphi=\"" << pixelIdHelper->phi_module_max(element->identify())+1 << "\"" + << " nz=\"" << m_pixelIdHelper->eta_module_max(element->identify()) + - m_pixelIdHelper->eta_module_min(element->identify())+1 << "\"" + << " nphi=\"" << m_pixelIdHelper->phi_module_max(element->identify())+1 << "\"" << " r0=\"" << (rMin+rMax)/20. << "\"" << " phi0=\"" << 180./M_PI * (element->phiMin()+element->phiMax())/2. << "\"" << " zMin=\"" << -zMax/10. << "\"" << " zMax=\"" << zMax/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Pixel barrel out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Pixel barrel out: " << out << endreq; } - if (element->isEndcap() && element->zMin() > 0 && pixelIdHelper->phi_module(element->identify()) == 0 - && pixelIdHelper->eta_module(element->identify()) == pixelIdHelper->eta_module_min(element->identify())) { + if (element->isEndcap() && element->zMin() > 0 && m_pixelIdHelper->phi_module(element->identify()) == 0 + && m_pixelIdHelper->eta_module(element->identify()) == m_pixelIdHelper->eta_module_min(element->identify())) { double rMin = element->rMin(); double rMax = element->rMax(); @@ -340,20 +340,20 @@ namespace JiveXML { zMax += 5; out << "<AEndcapSiliconDetector c=\"" << "PIX" << "\" n=\"" << "Pixel" << "\"" - << " layer=\"" << pixelIdHelper->layer_disk(element->identify()) << "\"" + << " layer=\"" << m_pixelIdHelper->layer_disk(element->identify()) << "\"" << " length=\"" << element->length()/10. << "\"" << " width=\"" << element->width()/10. << "\"" << " thickness=\"" << (rMax - rMin - element->sinTilt()*element->width())/40. << "\"" - << " nz=\"" << pixelIdHelper->eta_module_max(element->identify()) - - pixelIdHelper->eta_module_min(element->identify())+1 << "\"" - << " nphi=\"" << pixelIdHelper->phi_module_max(element->identify())+1 << "\"" + << " nz=\"" << m_pixelIdHelper->eta_module_max(element->identify()) + - m_pixelIdHelper->eta_module_min(element->identify())+1 << "\"" + << " nphi=\"" << m_pixelIdHelper->phi_module_max(element->identify())+1 << "\"" << " rMin=\"" << rMin/10. << "\"" << " rMax=\"" << rMax/10. << "\"" << " phi0=\"" << 180./M_PI * (element->phiMin()+element->phiMax())/2. << "\"" << " zMin=\"" << zMin/10. << "\"" << " zMax=\"" << zMax/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Pixel endcap out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Pixel endcap out: " << out << endreq; } } } @@ -369,9 +369,9 @@ namespace JiveXML { // Just an extra precaution to avoid crashes. if (!element) continue; - if (element->isBarrel() && element->zMax() > 0 && sctIdHelper->phi_module(element->identify()) == 0 - && sctIdHelper->eta_module(element->identify()) == sctIdHelper->eta_module_min(element->identify()) - && sctIdHelper->side(element->identify()) > 0) { + if (element->isBarrel() && element->zMax() > 0 && m_sctIdHelper->phi_module(element->identify()) == 0 + && m_sctIdHelper->eta_module(element->identify()) == m_sctIdHelper->eta_module_min(element->identify()) + && m_sctIdHelper->side(element->identify()) > 0) { double rMin = element->rMin(); double rMax = element->rMax(); @@ -393,25 +393,25 @@ namespace JiveXML { zMax += 5; out << "<ABarrelSiliconDetector c=\"" << "SIL" << "\" n=\"" << "Silicon" << "\"" - << " layer=\"" << sctIdHelper->layer_disk(element->identify()) << "\"" + << " layer=\"" << m_sctIdHelper->layer_disk(element->identify()) << "\"" << " length=\"" << element->length()/10. << "\"" << " width=\"" << element->width()/10. << "\"" << " thickness=\"" << 2. * (rMax - rMin - element->sinTilt()*element->width())/10. << "\"" << " tilt=\"" << 180./M_PI * asin(element->sinTilt()) << "\"" - << " nz=\"" << sctIdHelper->eta_module_max(element->identify()) - - sctIdHelper->eta_module_min(element->identify())+1 << "\"" - << " nphi=\"" << sctIdHelper->phi_module_max(element->identify())+1 << "\"" + << " nz=\"" << m_sctIdHelper->eta_module_max(element->identify()) + - m_sctIdHelper->eta_module_min(element->identify())+1 << "\"" + << " nphi=\"" << m_sctIdHelper->phi_module_max(element->identify())+1 << "\"" << " r0=\"" << (rMin+rMax)/20. << "\"" << " phi0=\"" << 180./M_PI * (element->phiMin()+element->phiMax())/2. << "\"" << " zMin=\"" << -zMax/10. << "\"" << " zMax=\"" << zMax/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "SCT barrel out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "SCT barrel out: " << out << endreq; } - if (element->isEndcap() && element->zMin() > 0 && sctIdHelper->phi_module(element->identify()) == 0 - && sctIdHelper->eta_module(element->identify()) == sctIdHelper->eta_module_min(element->identify()) - && sctIdHelper->side(element->identify()) > 0) { + if (element->isEndcap() && element->zMin() > 0 && m_sctIdHelper->phi_module(element->identify()) == 0 + && m_sctIdHelper->eta_module(element->identify()) == m_sctIdHelper->eta_module_min(element->identify()) + && m_sctIdHelper->side(element->identify()) > 0) { double rMin = element->rMin(); double rMax = element->rMax(); @@ -439,20 +439,20 @@ namespace JiveXML { zMax += 5; out << "<AEndcapSiliconDetector c=\"" << "SIL" << "\" n=\"" << "Silicon" << "\"" - << " layer=\"" << sctIdHelper->layer_disk(element->identify()) << "\"" + << " layer=\"" << m_sctIdHelper->layer_disk(element->identify()) << "\"" << " length=\"" << element->length()/10. << "\"" << " width=\"" << element->width()/10. << "\"" << " thickness=\"" << 2. * (rMax - rMin - element->sinTilt()*element->width())/10. << "\"" - << " nz=\"" << sctIdHelper->eta_module_max(element->identify()) - - sctIdHelper->eta_module_min(element->identify())+1 << "\"" - << " nphi=\"" << sctIdHelper->phi_module_max(element->identify())+1 << "\"" + << " nz=\"" << m_sctIdHelper->eta_module_max(element->identify()) + - m_sctIdHelper->eta_module_min(element->identify())+1 << "\"" + << " nphi=\"" << m_sctIdHelper->phi_module_max(element->identify())+1 << "\"" << " rMin=\"" << rMin/10. << "\"" << " rMax=\"" << rMax/10. << "\"" << " phi0=\"" << 180./M_PI * (element->phiMin()+element->phiMax())/2. << "\"" << " zMin=\"" << zMin/10. << "\"" << " zMax=\"" << zMax/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "SCT endcap out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "SCT endcap out: " << out << endreq; } } } @@ -464,23 +464,22 @@ namespace JiveXML { for (it=m_trt_manager->getDetectorElementBegin(); it<m_trt_manager->getDetectorElementEnd(); it++) { const InDetDD::TRT_BaseElement *elementIn = *it; - Identifier id = elementIn->identify(); - // Just an extra precaution to avoid crashes. if (!elementIn) continue; + Identifier id = elementIn->identify(); - if (trtIdHelper->phi_module(id) != 0) continue; - if (trtIdHelper->straw_layer(id) != 0) continue; + if (m_trtIdHelper->phi_module(id) != 0) continue; + if (m_trtIdHelper->straw_layer(id) != 0) continue; Amg::Vector3D posIn = elementIn->strawTransform(0) * Amg::Vector3D(0., 0., 0.); if (posIn.z() < 0) continue; const InDetDD::TRT_BaseElement *elementOut; - if (trtIdHelper->is_barrel(id)) { - elementOut = m_trt_manager->getBarrelElement(trtIdHelper->barrel_ec(id), - trtIdHelper->layer_or_wheel(id), + if (m_trtIdHelper->is_barrel(id)) { + elementOut = m_trt_manager->getBarrelElement(m_trtIdHelper->barrel_ec(id), + m_trtIdHelper->layer_or_wheel(id), 0, - trtIdHelper->straw_layer_max(id)); + m_trtIdHelper->straw_layer_max(id)); // Just an extra precaution to avoid crashes. if (!elementOut) continue; @@ -489,12 +488,13 @@ namespace JiveXML { // HepGeom::Point3D<double> posOut = elementOut->strawTransform(0) * HepGeom::Point3D<double>(0., 0., 0.); const InDetDD::TRT_BarrelElement *element = dynamic_cast<const InDetDD::TRT_BarrelElement *>(elementIn); + if (!element) continue; int nphi = (int) round(2.*M_PI / fabs(element->nextInPhi()->center().phi() - element->center().phi())); - double dphiIn = 2.*M_PI / (nphi * trtIdHelper->straw_max(elementIn->identify())); - double dphiOut = 2.*M_PI / (nphi * trtIdHelper->straw_max(elementOut->identify())); + double dphiIn = 2.*M_PI / (nphi * m_trtIdHelper->straw_max(elementIn->identify())); + double dphiOut = 2.*M_PI / (nphi * m_trtIdHelper->straw_max(elementOut->identify())); out << "<ABarrelTRTDetector c=\"TRT\" n=\"TRT\"" - << " layer=\"" << trtIdHelper->layer_or_wheel(id) << "\"" + << " layer=\"" << m_trtIdHelper->layer_or_wheel(id) << "\"" << " nphi=\"" << nphi << "\"" << " rMin=\"" << posIn.perp()/10. - .4 << "\"" << " rMax=\"" << posOut.perp()/10. + .4 << "\"" @@ -503,24 +503,24 @@ namespace JiveXML { << " zMin=\"" << -(posIn.z() + elementIn->strawLength()/2.)/10. << "\"" << " zMax=\"" << (posIn.z() + elementIn->strawLength()/2.)/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "TRT barrel out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "TRT barrel out: " << out << endreq; } else { - elementOut = m_trt_manager->getEndcapElement(1,//trtIdHelper->barrel_ec(id), - trtIdHelper->layer_or_wheel(id), - trtIdHelper->straw_layer_max(id), + elementOut = m_trt_manager->getEndcapElement(1,//m_trtIdHelper->barrel_ec(id), + m_trtIdHelper->layer_or_wheel(id), + m_trtIdHelper->straw_layer_max(id), 0); // Just an extra precaution to avoid crashes. if (!elementOut) continue; - //HepGeom::Point3D<double> posOut = elementOut->strawTransform(trtIdHelper->straw_max(id)) * HepGeom::Point3D<double>(0., 0., 0.); - Amg::Vector3D posOut = elementOut->strawTransform(trtIdHelper->straw_max(id)) * Amg::Vector3D(0.,0.,0.); + //HepGeom::Point3D<double> posOut = elementOut->strawTransform(m_trtIdHelper->straw_max(id)) * HepGeom::Point3D<double>(0., 0., 0.); + Amg::Vector3D posOut = elementOut->strawTransform(m_trtIdHelper->straw_max(id)) * Amg::Vector3D(0.,0.,0.); // floor() instead of round() becuase we are neglecting the space between two modules int nphi = (int) floor(2.*M_PI / fabs(posOut.phi() - posIn.phi())); out << "<AEndcapTRTDetector c=\"TRT\" n=\"TRT\"" - << " layer=\"" << trtIdHelper->layer_or_wheel(id) << "\"" + << " layer=\"" << m_trtIdHelper->layer_or_wheel(id) << "\"" << " nphi=\"" << nphi << "\"" << " rMin=\"" << (posIn.perp()-elementIn->strawLength()/2.)/10. << "\"" << " rMax=\"" << (posIn.perp()+elementIn->strawLength()/2.)/10. << "\"" @@ -528,7 +528,7 @@ namespace JiveXML { << " zMin=\"" << posIn.z()/10. << "\"" << " zMax=\"" << posOut.z()/10. << "\"" << " />" << std::endl; - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "TRT endcap out: " << out << endreq; + //if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "TRT endcap out: " << out << endreq; } } diff --git a/graphics/GeometryJiveXML/src/MuonGeometryWriter.cxx b/graphics/GeometryJiveXML/src/MuonGeometryWriter.cxx index 528060833d7b14668c876fbce5d31a51f1798474..72dbe46d669eca941aa326f22e2056d097176079 100755 --- a/graphics/GeometryJiveXML/src/MuonGeometryWriter.cxx +++ b/graphics/GeometryJiveXML/src/MuonGeometryWriter.cxx @@ -103,11 +103,13 @@ namespace JiveXML { const MdtIdHelper *mdtIdHelper = m_muon_manager->mdtIdHelper(); int snMax = mdtIdHelper->stationNameIndexMax(); + if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " Station types: " << snMax << endreq; + // Loop over all station types. for (int sn=0; sn<=snMax; sn++) { std::string stationName = mdtIdHelper->stationNameString(sn); // some stationNames no longer exist - if (stationName.compare(MuonIdHelper::BAD_NAME)) continue; + if (!stationName.compare(MuonIdHelper::BAD_NAME)) continue; // Determine the type of chamber from the stationName string. std::string stationTech; @@ -157,6 +159,8 @@ namespace JiveXML { if (station) stations->push_back(station); } + if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " Station size: " << stations->size() << endreq; + // While there are stations that haven't been written to XML, stay in this loop. while (stations->size() > 0) { @@ -217,6 +221,8 @@ namespace JiveXML { // to-be-processed list. phiString += " " + DataType(phi2).toString(); + if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " phiString " << phiString << endreq; + stations->erase(it, it+1); } }