diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h index c9f7350b9b5519397d333905470b3756e0048422..c728cf248a0fabd79fb86199e40daa525df6373a 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_ADD_BRANCH_PROCESSOR_H #define GEO_MODEL_XML_ADD_BRANCH_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for addbranch tags. // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h index e35d330a15b8df534a20fd1a4bd762d7066c777b..523204ece15ed2195eab0a9167d2b7e6a33a7247 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_ASSEMBLY_PROCESSOR_H #define GEO_MODEL_XML_ASSEMBLY_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for assembly tags. // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h index 9c3bf3c7fb7d7d76ab7cdd1b76c1ff135fbfe87b..54e1a691202758fd4b45d4994f92c8e99435ffdf 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_ASSEMBLYREF_PROCESSOR_H #define GEO_MODEL_XML_ASSEMBLYREF_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for assemblyref tags. diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h b/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h index 1e2faebbe9154ba77baaadc3a25ae755d816339e..aa892ce437937ed9ff5d7808f9e4f99a4fd0fdf4 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h @@ -9,17 +9,19 @@ // #ifndef GEO_MODEL_XML_ELEMENT2GEO_ITEM_H #define GEO_MODEL_XML_ELEMENT2GEO_ITEM_H +#include <xercesc/util/XercesDefs.hpp> #include <map> #include <string> -#include <xercesc/dom/DOM.hpp> - class RCBase; class GmxUtil; +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +XERCES_CPP_NAMESPACE_END class ProcessorRegistry; -namespace HepTool {class Evaluator;} +class Evaluator; class Element2GeoItem { diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h index 4a1f61e2dde4b6c7cb0a74dd0b105acc3318c269..08c92612ac39c52b926a019c51782981d34e7bb1 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h @@ -9,10 +9,13 @@ // #ifndef GEO_MODEL_XML_ELEMENT_PROCESSOR_H #define GEO_MODEL_XML_ELEMENT_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/GeoNodeList.h" -#include <xercesc/dom/DOM.hpp> +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +XERCES_CPP_NAMESPACE_END class GmxUtil; class ElementProcessor { diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h b/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h index 9df842d8ce20cbc00397475b97bc68f93b912456..2690f137c6fdaac058cc8299dbe2854e751c6402 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_GMX2GEO_H #define GEO_MODEL_XML_GMX2GEO_H +#include <xercesc/util/XercesDefs.hpp> /** * @brief Create a branch of a GeoModel Tree. @@ -43,9 +44,12 @@ #include "GeoModelXml/GmxInterface.h" class GeoPhysVol; - -#include <xercesc/dom/DOM.hpp> -#include <xercesc/dom/DOMLSParser.hpp> +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +XERCES_CPP_NAMESPACE_END +XERCES_CPP_NAMESPACE_BEGIN +class DOMNode; +XERCES_CPP_NAMESPACE_END class Evaluator; diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h b/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h index a99e9a9a2f2eb5f644dec49efa773e5e119d2b95..1ca6a1029aa8088e87720475ac4963d6aea8298f 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef GEO_MODEL_XML_GMXUTIL_H @@ -28,7 +28,11 @@ #include "GeoModelXml/MakeTransformationref.h" #include "GeoModelXml/MakeTranslation.h" #include "GeoModelXml/MakeRotation.h" +#ifndef GEOMODEL_STANDALONE_GMX +// #include "GeoModelXml/MakeScaling.h" +#endif +#include "GeoModelXml/shape/MakeSimplePolygonBrep.h" #include "GeoModelXml/shape/MakeBox.h" #include "GeoModelXml/shape/MakeCons.h" #include "GeoModelXml/shape/MakeGenericTrap.h" @@ -78,6 +82,7 @@ public: // MakeElement element; MakeMaterial material; + MakeSimplePolygonBrep simplepolygonbrep; MakeBox box; MakeCons cons; MakeGenericTrap generictrap; @@ -99,6 +104,9 @@ public: // MakeTranslation translation; MakeRotation rotation; +#ifndef GEOMODEL_STANDALONE_GMX +// MakeScaling scaling; +#endif // // Other things // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h index 036415efa90fc9674e6817ed6eb988c1e08a73ff..2e66b9576e339848c18e7a72c1faeac9817909fb 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_INDEX_PROCESSOR_H #define GEO_MODEL_XML_INDEX_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for index tags which change the formula for generating a position-index. // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h index 61003e0e0a57307e9fbe11a376b852d7d8ead0bb..a3b44e18f599c3ca959869433f2c75190ca92ddf 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_LOGVOL_PROCESSOR_H #define GEO_MODEL_XML_LOGVOL_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for logvol tags. // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h index 82ad815c0de56231808191f1b7a26f2ed633757b..a3efbb9bd4157992bdadda0e6b9229f7a4783c2e 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_LOGVOLREF_PROCESSOR_H #define GEO_MODEL_XML_LOGVOLREF_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for logvolref tags. diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h index f89e03a70a16af3fa3d9a04adec4ecafd0c963b4..f1494499f1af72106d71ab71a3a6892c6f7034e1 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h @@ -7,6 +7,7 @@ // #ifndef GEO_MODEL_XML_MAKE_ELEMENT_H #define GEO_MODEL_XML_MAKE_ELEMENT_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h index a91509ce2f3283193ce850a6b1777b6ecd3c31dc..8d95e862226a72f8206a06620d6d430f7c0aaa8e 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h @@ -7,6 +7,7 @@ // #ifndef GEO_MODEL_XML_MAKE_MATERIAL_H #define GEO_MODEL_XML_MAKE_MATERIAL_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h index 00d30450184986f87588832fcc7b10a5cf051d91..3a41d1ebbc8179c5d2537ee890a405e96a787194 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h @@ -4,17 +4,17 @@ #ifndef GEO_MODEL_XML_MAKE_ROTATION_H #define GEO_MODEL_XML_MAKE_ROTATION_H +#include <xercesc/util/XercesDefs.hpp> // // Create and return a HepRotation3d. Caller must delete it. // -#include <xercesc/dom/DOM.hpp> +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +XERCES_CPP_NAMESPACE_END #include "GeoModelKernel/GeoDefinitions.h" - -//namespace HepGeom {class Rotate3D;} class GmxUtil; - class MakeRotation { public: MakeRotation(); diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h index 9977b8c26b99cd5fcf02eb718d007ac182381b45..c80e05c88c8f15581f75f6bd27f5358236eadf71 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h @@ -7,6 +7,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TRANSFORMATION_H #define GEO_MODEL_XML_MAKE_TRANSFORMATION_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h index ac1b56787f197c54439766150d422aea631d9fb8..5c345f73663ddb943762f1ece8b883b0ee482730 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h @@ -7,6 +7,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TRANSFORMATIONREF_H #define GEO_MODEL_XML_MAKE_TRANSFORMATIONREF_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h index 8bd4f793dffd6658dee9ece052f8cb1d15654b2d..3464308f791059a16548cd7fa36d0f89e52d299f 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h @@ -4,15 +4,15 @@ #ifndef GEO_MODEL_XML_MAKE_TRANSLATION_H #define GEO_MODEL_XML_MAKE_TRANSLATION_H +#include <xercesc/util/XercesDefs.hpp> // // Create and return a HepRotation3d. Caller must delete it. // +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +XERCES_CPP_NAMESPACE_END #include "GeoModelKernel/GeoDefinitions.h" - -#include <xercesc/dom/DOM.hpp> - -//namespace HepGeom {class Translate3D;} class GmxUtil; diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h index 4c0bd59784dd834fb8128f6c89e64f4551e3ae98..d52033f4ea5ae1ca046ca83547b2d6696dab7808 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_MULTICOPY_PROCESSOR_H #define GEO_MODEL_XML_MULTICOPY_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for multicopy tags. // diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h b/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h new file mode 100644 index 0000000000000000000000000000000000000000..e6fc568a707de6e4e8216dbca738dd9ada5befba --- /dev/null +++ b/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +// +// Use gaudi messaging service when in Athena; use cout when "stand-alone". +// + +#ifndef OUTPUTDIRECTOR_H +#define OUTPUTDIRECTOR_H + +#ifdef GEOMODEL_STANDALONE_GMX + #include <iostream> + #include <string> + + namespace MSG { + // enum((VERBOSE=1, DEBUG, INFO, WARNING, ERROR, FATAL, ALWAYS))} + const std::string PKG_NAME("GeoModelXML-"); + const std::string VERBOSE(PKG_NAME + "VERBOSE: "); + const std::string DEBUG(PKG_NAME + "DEBUG: "); + const std::string INFO(PKG_NAME + "INFO: "); + const std::string WARNING(PKG_NAME + "WARNING: "); + const std::string ERROR(PKG_NAME + "ERROR: "); + const std::string FATAL(PKG_NAME + "FATAL: "); + const std::string ALWAYS(PKG_NAME + "ALWAYS: "); + } + // Consider changing this to a longer, less clashing sort of name, in the code + #define msglog std::cout + #define endmsg std::endl + // Nothing to do for stand-alone output; cout is already available. + #define OUTPUT_STREAM +#else + #include "GaudiKernel/ServiceHandle.h" + #include "GaudiKernel/MsgStream.h" + #include "GaudiKernel/IMessageSvc.h" + // Macro OUTPUT_STREAM opens a MsgStream called log; can then write to it. + // Cannot get ServiceHandle directly into the macro; hide it with a typedef... + typedef ServiceHandle<IMessageSvc> SvcHndl; + #define OUTPUT_STREAM SvcHndl msgh("MessageSvc", "GeoModelXml"); MsgStream msglog(&(*msgh), "GeoModelXml") +#endif + +#endif // OUTPUTDIRECTOR_H diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h b/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h index 84e00de59fe56ae1efe294d7f25c06f4cc6f7508..09dc48d18c59b7578261776e5866f84924e8ff39 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h @@ -7,6 +7,7 @@ // #ifndef GEO_MODEL_XML_STRICT_ERROR_HANDLER_H #define GEO_MODEL_XML_STRICT_ERROR_HANDLER_H +#include <xercesc/util/XercesDefs.hpp> #include <xercesc/dom/DOMErrorHandler.hpp> #include <xercesc/util/XMLString.hpp> @@ -36,4 +37,4 @@ inline bool StrictErrorHandler::getSawErrors() const { return m_SawErrors; } -#endif //STRICT_ERROR_HANDLER_H \ No newline at end of file +#endif //STRICT_ERROR_HANDLER_H diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h index 1d90afd707dc93139d10b76349c175878b63b0e7..7167379dd05e3b2f2cd38044090161d57a1574a3 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_TRANSFORM_PROCESSOR_H #define GEO_MODEL_XML_TRANSFORM_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for transform tags. diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h index 0c04a62b7321b2ad4648502cef0722b7ff98736d..3314c90ea9fff64e97be50daa1272a5a729ee735 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h @@ -4,6 +4,7 @@ #ifndef GEO_MODEL_XML_TRANSFORMREF_PROCESSOR_H #define GEO_MODEL_XML_TRANSFORMREF_PROCESSOR_H +#include <xercesc/util/XercesDefs.hpp> // // Processor for logvolref tags. diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h b/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h index 2fafc9d772891104171cded4dd4ad1a1c464414c..bc7772436d8bc2b82967cd4b747fe7fdba93c7fb 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h @@ -1,7 +1,9 @@ /* Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ - +#ifndef CREATEDOMDOCUMENT_H +#define CREATEDOMDOCUMENT_H +#include <xercesc/util/XercesDefs.hpp> #include <xercesc/dom/DOM.hpp> #include <xercesc/dom/DOMLSParser.hpp> #include <iostream> @@ -10,3 +12,5 @@ using namespace std; using namespace xercesc; DOMDocument *createDOMDocument(string xmlFile, DOMLSParser *parser, unsigned int flags = 0); + +#endif // CREATEDOMDOCUMENT_H diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h index 411d73ccaf9b315827a91b8b6d9e01607bb2a0eb..7bac7dfa87f5f188905b3dc88479a14ffe3b2968 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h @@ -4,8 +4,11 @@ #ifndef ADDPLANE_H #define ADDPLANE_H +#include <xercesc/util/XercesDefs.hpp> -#include <xercesc/dom/DOM.hpp> +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +XERCES_CPP_NAMESPACE_END class AddPlane { public: diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h index 8c039062ce332383d6f2503f3675d44ac6daff5e..599abebcec3b07fd648e3a84ad280b2cfacc7c01 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_BOX_H #define GEO_MODEL_XML_MAKE_BOX_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h index 8c4e3a77c80996bf47b5349ce98c3a971bf4a3fe..9283cfc20a0b8ac1d7b1f28e54b71f8cb0fb3329 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_CONS_H #define GEO_MODEL_XML_MAKE_CONS_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h index f0f2a77d92e03d5852e17a93de284d7e853c362b..0eed6fe1193ef4c476cef6c33172c37190cb3ecc 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_GENERICTRAP_H #define GEO_MODEL_XML_MAKE_GENERICTRAP_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h index a99c42740a1c9357895d95ce2ee12cd8228508b6..483a11e51fecc2285f66a949de54b0e743282abd 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_INTERSECTION_H #define GEO_MODEL_XML_MAKE_INTERSECTION_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h index 1fd1ca29ec7db19f5e41ba339cd8ec5b252c3bb2..b354c986541eff1b35c55c6967c7c313224cd98d 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_PARA_H #define GEO_MODEL_XML_MAKE_PARA_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h index 81343184fbffc154e2727f858810adffc4b70dec..aab86ab53367d9c6921110411baf9def6a9f9067 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_PCON_H #define GEO_MODEL_XML_MAKE_PCON_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h index 15111add35a02213d496c07c854852d96cb2a5f6..df9fded68e5f2382b1c0f8018adb8eefcd87996d 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_PGON_H #define GEO_MODEL_XML_MAKE_PGON_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h index f90f750b2f52802631993e4f2ff687e308c9cc77..905e5fe2c131f60890aece05f8f056631d8714be 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_SHAPEREF_H #define GEO_MODEL_XML_MAKE_SHAPEREF_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h new file mode 100644 index 0000000000000000000000000000000000000000..5ec995fb3fbc496de16e1970f01e2b6a14977ae4 --- /dev/null +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h @@ -0,0 +1,20 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +#include <xercesc/util/XercesDefs.hpp> +// +// Handle simplePolygonBrep shape elements. +// +#ifndef GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H +#define GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H +#include <xercesc/util/XercesDefs.hpp> + +#include "GeoModelXml/Element2GeoItem.h" + +class MakeSimplePolygonBrep: public Element2GeoItem { +public: + MakeSimplePolygonBrep(); + const RCBase * make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const; +}; + +#endif // GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h index 3550f662bb43c42ba23952d18075f935e1e8736c..5dcd328651f4438b568e0e67d090ebb9645a92d3 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_SUBTRACTION_H #define GEO_MODEL_XML_MAKE_SUBTRACTION_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h index fd0e871db4c2c5f9bde0cf5e87d5011a2a669efb..3e8794c8c2e9a4ea43b5189b6dd931a4d209fb2a 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TRAP_H #define GEO_MODEL_XML_MAKE_TRAP_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h index c12e0d23ad90db42a637b436e63832c1837a4256..85ec542afa17852cf85ff6c18ccc06127950c612 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TRD_H #define GEO_MODEL_XML_MAKE_TRD_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h index 47eeafee4884bc16b4056bc1727d3388378aa967..8c6f45debeb43709523b3f688e52a84c549687b1 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TUBE_H #define GEO_MODEL_XML_MAKE_TUBE_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h index 6efbf27e1364a70eb9ac4f7771786d8cec2821e6..c414908e5ba65f6e63f3e65dc7fb0c693a59d621 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_TUBS_H #define GEO_MODEL_XML_MAKE_TUBS_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h index ecb2eee446078fb3df64b64a0b35291aca5f9359..e1a762fda56697a5488eb60225e8494565761213 100644 --- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h +++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h @@ -8,6 +8,7 @@ // #ifndef GEO_MODEL_XML_MAKE_UNION_H #define GEO_MODEL_XML_MAKE_UNION_H +#include <xercesc/util/XercesDefs.hpp> #include "GeoModelXml/Element2GeoItem.h" diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/translate.h b/DetectorDescription/GeoModelXml/GeoModelXml/translate.h deleted file mode 100644 index d234adc7edb0f892f0909280171ad825a96ea205..0000000000000000000000000000000000000000 --- a/DetectorDescription/GeoModelXml/GeoModelXml/translate.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GEO_MODEL_XML_TRANSLATE_H -#define GEO_MODEL_XML_TRANSLATE_H -// -// Just an abbreviation for transcode functions. -// translate("a string") returns the u16 type needed internally by Xerces-C -// translate(Xerces-C string) returns a char * string version -// -// remember to release a char * with XMLString::release(char *theStringYouGaveMe) when finished with it -// -#include <xercesc/util/XMLString.hpp> - -#define Translate xercesc::XMLString::transcode - -#endif // TRANSLATE_H diff --git a/DetectorDescription/GeoModelXml/data/geomodel.dtd b/DetectorDescription/GeoModelXml/data/geomodel.dtd index 54cf5c59d9012e4dc64979e0f957d879f805f17a..e0b0d314610b42f658d0c2bb244623168af97ea5 100644 --- a/DetectorDescription/GeoModelXml/data/geomodel.dtd +++ b/DetectorDescription/GeoModelXml/data/geomodel.dtd @@ -65,9 +65,15 @@ <!ELEMENT addindex EMPTY> <!ATTLIST addindex name ID #REQUIRED> - <!ELEMENT shapes ((box|cons|generictrap|para|pcon|pgon|trap|tube|tubs|trd|intersection|subtraction|union)+)> + <!ELEMENT shapes ((box|cons|generictrap|para|pcon|pgon|trap|tube|tubs|trd|intersection|subtraction|union|simplepolygonbrep)+)> <!-- All shapes allowed in GeoModel manual. Same name, parameters, parameter order, but always lower case --> + <!ELEMENT simplepolygonbrep EMPTY> + <!ATTLIST simplepolygonbrep name ID #REQUIRED + xpoints CDATA #REQUIRED + ypoints CDATA #REQUIRED + zhalflength CDATA #REQUIRED> + <!ELEMENT box EMPTY> <!ATTLIST box name ID #REQUIRED xhalflength CDATA #REQUIRED diff --git a/DetectorDescription/GeoModelXml/src/AddPlane.cxx b/DetectorDescription/GeoModelXml/src/AddPlane.cxx index 5befaade807fe73d61b4bea43c5afd1313708d41..dd2f71cdf47e0717b459364ce9eba7ac489a8a06 100644 --- a/DetectorDescription/GeoModelXml/src/AddPlane.cxx +++ b/DetectorDescription/GeoModelXml/src/AddPlane.cxx @@ -7,15 +7,15 @@ #include <sstream> #include <xercesc/dom/DOM.hpp> -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" using namespace xercesc; -void AddPlane::process(const DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane) { +void AddPlane::process(const xercesc::DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane) { - std::istringstream(Translate(element->getAttribute(Translate("zplane")))) >> zPlane; - std::istringstream(Translate(element->getAttribute(Translate("rminplane")))) >> rMinPlane; - std::istringstream(Translate(element->getAttribute(Translate("rmaxplane")))) >> rMaxPlane; + std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("zplane")))) >> zPlane; + std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("rminplane")))) >> rMinPlane; + std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("rmaxplane")))) >> rMaxPlane; return; } diff --git a/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx b/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx index f0d3119519fdfbb96c77020a80197a64fa0dc631..8a74efb97e724fbc4aa1bbd153487fb506bfb526 100644 --- a/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx @@ -13,17 +13,17 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/ProcessorRegistry.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace std; using namespace xercesc; -void AddbranchProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { +void AddbranchProcessor::process(const xercesc::DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { - char *name2release = Translate(child->getNodeName()); + char *name2release = XMLString::transcode(child->getNodeName()); string name(name2release); XMLString::release(&name2release); gmxUtil.processorRegistry.find(name)->process(dynamic_cast<const DOMElement *>(child), gmxUtil, toAdd); diff --git a/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx b/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx index 27cff3b600c16602c58df421a4cb774b1434198e..29397e85f4c86e3270f0f3261758871fa5285768 100644 --- a/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx @@ -23,7 +23,7 @@ #include "GeoModelKernel/GeoFullPhysVol.h" #include "GeoModelXml/GmxUtil.h" #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" // using namespace CLHEP; @@ -36,7 +36,7 @@ GeoNameTag *physVolName; gmxUtil.positionIndex.incrementLevel(); - char *name2release = Translate(element->getAttribute(Translate("name"))); + char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); // @@ -67,7 +67,7 @@ GeoNameTag *physVolName; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { DOMElement *el = dynamic_cast<DOMElement *> (child); - name2release = Translate(el->getNodeName()); + name2release = XMLString::transcode(el->getNodeName()); string name(name2release); XMLString::release(&name2release); gmxUtil.processorRegistry.find(name)->process(el, gmxUtil, childrenAdd); @@ -76,7 +76,7 @@ GeoNameTag *physVolName; // // Make a new PhysVol and add everything to it, then add it to the list of things for my caller to add // - char *toRelease = Translate(element->getAttribute(Translate("alignable"))); + char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable"))); string alignable(toRelease); XMLString::release(&toRelease); if (alignable.compare(string("true")) == 0) { @@ -101,7 +101,7 @@ GeoNameTag *physVolName; void AssemblyProcessor::zeroId(const xercesc::DOMElement *element) { - char *name2release = Translate(element->getAttribute(Translate("name"))); + char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); // diff --git a/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx index 8a362ab115b97913d883e8055c847915dbd6be4a..a95d759851b7c6d0fb30950957915528986dc439 100644 --- a/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx @@ -5,28 +5,22 @@ // // Process assemblyref items: basically, just find the referenced assembly and call its processor. // - -#ifndef STANDALONE_GMX -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - - +#include "GeoModelXml/OutputDirector.h" #include "GeoModelXml/AssemblyrefProcessor.h" #include <string> + +#include "xercesc/util/XercesDefs.hpp" #include <xercesc/dom/DOM.hpp> +#include "xercesc/util/XMLString.hpp" + #include "GeoModelXml/GmxUtil.h" #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" using namespace std; using namespace xercesc; void AssemblyrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); char *toRelease; @@ -38,26 +32,20 @@ char *toRelease; // // Check it is the right sort // - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("assembly")) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Error in xml/gmx file: assemblyref " << Translate(idref) << " referenced a " << - nodeName << " instead of an assembly.\n"; -#else - std::cerr<< "Error in xml/gmx file: assemblyref " << Translate(idref) << " referenced a " << + OUTPUT_STREAM; + msglog << MSG::FATAL << "Error in xml/gmx file: assemblyref " << XMLString::transcode(idref) << " referenced a " << nodeName << " instead of an assembly.\n"; -#endif exit(999); // Should do better... } // // Process it // - const XMLCh *zeroid = element->getAttribute(Translate("zeroid")); - if (XMLString::equals(zeroid, Translate("true"))) { + const XMLCh *zeroid = element->getAttribute(XMLString::transcode("zeroid")); + if (XMLString::equals(zeroid, XMLString::transcode("true"))) { gmxUtil.tagHandler.assembly.zeroId(elem); } gmxUtil.tagHandler.assembly.process(elem, gmxUtil, toAdd); diff --git a/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx b/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx index a3503b31e1e88b9c1540e0aec437b94c7ebbdc95..01fabd4505f5ab74be1c57daea087ef7218bd143 100644 --- a/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx +++ b/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx @@ -1,21 +1,17 @@ /* Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif +#include <string> #include "GeoModelXml/Element2GeoItem.h" -#include <string> +#include "GeoModelXml/OutputDirector.h" + +#include "xercesc/util/XercesDefs.hpp" #include <xercesc/dom/DOM.hpp> +#include "xercesc/util/XMLString.hpp" + #include "GeoModelXml/GmxUtil.h" #include "GeoModelKernel/RCBase.h" -#include "GeoModelXml/translate.h" using namespace std; using namespace xercesc; @@ -28,7 +24,7 @@ const RCBase * Element2GeoItem::process(const xercesc::DOMElement *element, GmxU char *name2release; - name2release = Translate(element->getAttribute(Translate("name"))); + name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); @@ -49,15 +45,9 @@ const RCBase * Element2GeoItem::process(const xercesc::DOMElement *element, GmxU } const RCBase * Element2GeoItem::make(const xercesc::DOMElement *element, GmxUtil & /* gmxUtil */) const { - char *name2release = Translate(element->getNodeName()); - -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << endmsg; -#else - std::cerr<< "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << std::endl; -#endif + char *name2release = XMLString::transcode(element->getNodeName()); + OUTPUT_STREAM; + msglog << MSG::FATAL << "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << endmsg; XMLString::release(&name2release); exit(999); // Should improve on this diff --git a/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx b/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx index 13847821e90911b64d2ef80c037d33f996da8fe1..881d970b72abb843752a59b6d97b91cc6350be01 100644 --- a/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx @@ -16,18 +16,11 @@ // #include "GeoModelXml/ElementProcessor.h" -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - - +#include "GeoModelXml/OutputDirector.h" #include <string> +#include "xercesc/util/XercesDefs.hpp" #include <xercesc/dom/DOM.hpp> -#include "GeoModelXml/translate.h" + #include "GeoModelXml/GeoNodeList.h" #include "GeoModelXml/ProcessorRegistry.h" @@ -39,15 +32,10 @@ ElementProcessor::ElementProcessor() {} void ElementProcessor::process(const DOMElement *element, GmxUtil & /* gmxUtil*/, GeoNodeList & /* toAdd */) { - char *name2release = Translate(element->getNodeName()); + char *name2release = XMLString::transcode(element->getNodeName()); std::string name(name2release); XMLString::release(&name2release); -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Error!!! Default element processor called for tag-name " << name << endmsg; -#else - std::cerr << "Error!!! Default element processor called for tag-name " << name << std::endl; -#endif + OUTPUT_STREAM; + msglog << MSG::FATAL << "Error!!! Default element processor called for tag-name " << name << endmsg; } diff --git a/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx b/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx index 53eb447cd15ad4d9e295cacf49652b1df0d50a8c..b9475f43c6931bff311eb759ccba7d70854be89c 100644 --- a/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx +++ b/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx @@ -3,20 +3,14 @@ */ #include "GeoModelXml/Gmx2Geo.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/IMessageSvc.h" -#include "GaudiKernel/MsgStream.h" -#else -#include <iostream> -#endif +#include "GeoModelXml/OutputDirector.h" #include <string> #include <iomanip> #include <sstream> #include <stdlib.h> +#include <xercesc/util/XercesDefs.hpp> #include <xercesc/dom/DOM.hpp> #include <xercesc/dom/DOMLSParser.hpp> #include <xercesc/util/PlatformUtils.hpp> @@ -25,7 +19,7 @@ #include "ExpressionEvaluator/Evaluator.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GeoNodeList.h" #include "GeoModelXml/ElementProcessor.h" #include "GeoModelXml/GmxUtil.h" @@ -33,7 +27,6 @@ #include "GeoModelXml/createdomdocument.h" using namespace std; -using namespace xercesc; Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInterface, unsigned int flags) { // @@ -42,20 +35,13 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt // Logging: ref https://wiki.bnl.gov/dayabay/index.php?title=Logging // Turn on logging in job-options with: MessageSvc.setDebug += {"GeoModelXml"} -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); -#endif + OUTPUT_STREAM; DOMLSParser *parser = 0; DOMDocument *doc = createDOMDocument(xmlFile, parser, flags); if (!doc) {// Parsed badly XMLPlatformUtils::Terminate(); -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Error in xml file " << xmlFile << ". Exiting athena." << endmsg; -#else - std::cout<<"Error in xml file " << xmlFile << ". Exiting athena." <<std::endl; -#endif + msglog << MSG::FATAL << "Error in xml file " << xmlFile << ". Exiting athena." << endmsg; exit(0); } // @@ -70,26 +56,14 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt // info message: name of detector // if (flags & 0x1) { -#ifndef STANDALONE_GMX - log << MSG::INFO << "Set up detector geometry from db-string \nwhich adds sub-detector "; -#else - std::cout<<"Set up detector geometry from db-string \nwhich adds sub-detector "; -#endif + msglog << MSG::INFO << "Set up detector geometry from db-string \nwhich adds sub-detector "; } else { -#ifndef STANDALONE_GMX - log << MSG::INFO << "Set up detector geometry from file " << xmlFile << " which adds sub-detector "; -#else - std::cout<<"Set up detector geometry from db-string \nwhich adds sub-detector "; -#endif + msglog << MSG::INFO << "Set up detector geometry from file " << xmlFile << " which adds sub-detector "; } const DOMElement *element = dynamic_cast<const DOMElement*>(root); - const XMLCh *attribute = element->getAttribute(Translate("name")); -#ifndef STANDALONE_GMX - log << Translate(attribute) << endmsg; -#else - std::cout<<Translate(attribute) << std::endl; -#endif + const XMLCh *attribute = element->getAttribute(XMLString::transcode("name")); + msglog << XMLString::transcode(attribute) << endmsg; // // Add all constant definitions to the evaluator, so they are ready if needed. // @@ -107,7 +81,7 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt // and it fills in the list of things to be added to the GeoModel graph. // There is one and only one addbranch element according to the DTD. // - xercesc::DOMNodeList *addbranchs = doc->getElementsByTagName(Translate("addbranch")); + xercesc::DOMNodeList *addbranchs = doc->getElementsByTagName(XMLString::transcode("addbranch")); const DOMElement *addbranch = dynamic_cast<const DOMElement *> (addbranchs->item(0)); GeoNodeList toAdd; gmxUtil.processorRegistry.find("addbranch")->process(addbranch, gmxUtil, toAdd); @@ -136,19 +110,12 @@ const DOMElement *element; // //------------------------------------------------------------------------------------------- // -// Turn var printout on and off with - -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc","GmxUtil"); - MsgStream log(&(*msgh), "GmxUtil"); - log << MSG::DEBUG << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n"; - log << MSG::DEBUG << "==============================================\n\n"; -#else - std::cout << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n"; - std::cout << "==============================================\n\n"; -#endif +// Turn var printout on and off with message level + OUTPUT_STREAM; + msglog << MSG::DEBUG << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n"; + msglog << MSG::DEBUG << "==============================================\n\n"; - DOMNodeList *defines = doc->getElementsByTagName(Translate("defines")); + DOMNodeList *defines = doc->getElementsByTagName(XMLString::transcode("defines")); int nDefines = defines->getLength(); for (int i = 0; i < nDefines; ++i) { element = dynamic_cast<DOMElement *>(defines->item(i)); @@ -158,19 +125,14 @@ const DOMElement *element; // // Vectors: a list of variables. Names subscripted by _k; values white-space separated numbers. // + msglog << "\n\n Vectors\n =======\n\n"; -#ifndef STANDALONE_GMX - log << "\n\n Vectors\n =======\n\n"; -#else - std::cout<<"\n\n Vectors\n =======\n\n"; -#endif - - vars = element->getElementsByTagName(Translate("vector")); + vars = element->getElementsByTagName(XMLString::transcode("vector")); nVars = vars->getLength(); for (int j = 0; j < nVars; ++j) { var = dynamic_cast<DOMElement*>(vars->item(j)); - char *name = Translate(var->getAttribute(Translate("name"))); - char *val = Translate(var->getAttribute(Translate("value"))); + char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name"))); + char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value"))); string fullname(name); fullname += '_'; istringstream list(val); @@ -178,11 +140,7 @@ const DOMElement *element; int k = 0; do { list >> dble; -#ifndef STANDALONE_GMX - log << fullname + to_string(k) << " = " << dble << endl; -#else - std::cout<<fullname + to_string(k) << " = " << dble << std::endl; -#endif + msglog << fullname + to_string(k) << " = " << dble << endl; eval.setVariable((fullname + to_string(k++)).c_str(), dble); } while(list.good()); XMLString::release(&name); @@ -191,20 +149,16 @@ const DOMElement *element; // // Matrices: a matrix of variables. Names subscripted by _j_k; values: white-space separated numbers. // -#ifndef STANDALONE_GMX - log << "\n\n Matrices\n ========\n\n"; -#else - std::cout<<"\n\n Matrices\n ========\n\n"; -#endif + msglog << "\n\n Matrices\n ========\n\n"; - vars = element->getElementsByTagName(Translate("matrix")); + vars = element->getElementsByTagName(XMLString::transcode("matrix")); nVars = vars->getLength(); for (int j = 0; j < nVars; ++j) { var = dynamic_cast<DOMElement*>(vars->item(j)); - char *name = Translate(var->getAttribute(Translate("name"))); - char *val = Translate(var->getAttribute(Translate("value"))); + char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name"))); + char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value"))); int coldim; - istringstream(Translate(var->getAttribute(Translate("coldim")))) >> coldim; + istringstream(XMLString::transcode(var->getAttribute(XMLString::transcode("coldim")))) >> coldim; string fullname(name); fullname += '_'; istringstream list(val); @@ -213,11 +167,7 @@ const DOMElement *element; do { for (int col = 0; col < coldim; ++col) { list >> dble; -#ifndef STANDALONE_GMX - log << fullname + to_string(k) + '_' + to_string(col) << " = " << dble << endl; -#else - std::cout<<fullname + to_string(k) + '_' + to_string(col) << " = " << dble << std::endl; -#endif + msglog << fullname + to_string(k) + '_' + to_string(col) << " = " << dble << endl; eval.setVariable((fullname + to_string(k) + '_' + to_string(col)).c_str(), dble); if (!list.good()) break; } @@ -229,65 +179,44 @@ const DOMElement *element; // // Vars: single variable // -#ifndef STANDALONE_GMX - log << "\n\n Single variables\n ================\n\n"; -#else - std::cout<<"\n\n Single variables\n ================\n\n"; -#endif + msglog << "\n\n Single variables\n ================\n\n"; - vars = element->getElementsByTagName(Translate("var")); + vars = element->getElementsByTagName(XMLString::transcode("var")); nVars = vars->getLength(); for (int j = 0; j < nVars; ++j) { var = dynamic_cast<DOMElement*>(vars->item(j)); - char *name = Translate(var->getAttribute(Translate("name"))); - char *val = Translate(var->getAttribute(Translate("value"))); + char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name"))); + char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value"))); double evaluated = eval.evaluate(val); if (eval.status() != Evaluator::OK) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "GeoModelXml Error processing CLHEP Evaluator expression. Error name " << + msglog << MSG::FATAL << "GeoModelXml Error processing CLHEP Evaluator expression. Error name " << eval.error_name() << endl << "Message: "; eval.print_error(); - log << val << endl; - log << string(eval.error_position(), '-') << '^' << '\n'; - log << "Exiting program." << endmsg; -#else - std::cout<< "GeoModelXml Error processing CLHEP Evaluator expression. Error name " << - eval.error_name() << std::endl << "Message: "; - eval.print_error(); - std::cout << val << std::endl; - std::cout << string(eval.error_position(), '-') << '^' << '\n'; - std::cout << "Exiting program." << std::endl; -#endif + msglog << val << endl; + msglog << string(eval.error_position(), '-') << '^' << '\n'; + msglog << "Exiting program." << endmsg; exit(999); // Should do better... } eval.setVariable(name, evaluated); -#ifndef STANDALONE_GMX - log << name << "\t\t" << val << " = " << setprecision(10) << evaluated << endl; -#else - std::cout<<"\t\t" << val << " = " << setprecision(10) << evaluated << std::endl; -#endif + msglog << name << "\t\t" << val << " = " << setprecision(10) << evaluated << endl; XMLString::release(&name); XMLString::release(&val); } } -#ifndef STANDALONE_GMX - log << endmsg; -#else - std::cout<<std::endl; -#endif + msglog << endmsg; return 1; } int Gmx2Geo::doPositionIndex(xercesc::DOMDocument *doc, GmxUtil &gmxUtil) { - DOMNodeList *posIndex = doc->getElementsByTagName(Translate("positionindex")); + DOMNodeList *posIndex = doc->getElementsByTagName(XMLString::transcode("positionindex")); int nPosIndex = posIndex->getLength(); // Probably limited to 0 or 1 by DTD for (int i = 0; i < nPosIndex; ++i) { const DOMElement *element = dynamic_cast<DOMElement *>(posIndex->item(i)); - DOMNodeList *addindexs = element->getElementsByTagName(Translate("addindex")); + DOMNodeList *addindexs = element->getElementsByTagName(XMLString::transcode("addindex")); int nIndexs = addindexs->getLength(); for (int j = 0; j < nIndexs; ++j) { DOMElement *addindex = dynamic_cast<DOMElement*>(addindexs->item(j)); - string name = string(Translate(addindex->getAttribute(Translate("name")))); + string name = string(XMLString::transcode(addindex->getAttribute(XMLString::transcode("name")))); gmxUtil.positionIndex.addIndex(name); } } @@ -305,7 +234,7 @@ string tagName; // // Loop over all readoutgeometry elements // - DOMNodeList *rgs = doc->getElementsByTagName(Translate("readoutgeometry")); + DOMNodeList *rgs = doc->getElementsByTagName(XMLString::transcode("readoutgeometry")); int nRG = rgs->getLength(); for (int i = 0; i < nRG; ++i) { map<string, string> rgParams; // New empty list @@ -315,7 +244,7 @@ string tagName; // for (DOMNode *rgChild = rg->getFirstChild(); rgChild != 0; rgChild = rgChild->getNextSibling()) { if (rgChild->getNodeType() != DOMNode::ELEMENT_NODE) continue; // Skip char data - name2release = Translate(rgChild->getNodeName()); + name2release = XMLString::transcode(rgChild->getNodeName()); tagName = name2release; XMLString::release(&name2release); if (tagName == "param") { @@ -324,7 +253,7 @@ string tagName; else if (tagName == "sensorclass") { map<string, string> scParams(rgParams); // Initialised with all previous params const DOMElement *sensorClass = dynamic_cast<DOMElement *>(rgChild); - name2release = Translate(sensorClass->getAttribute(Translate("name"))); + name2release = XMLString::transcode(sensorClass->getAttribute(XMLString::transcode("name"))); string clas(name2release); // class is reserved word XMLString::release(&name2release); // @@ -332,7 +261,7 @@ string tagName; // for (DOMNode *scChild = sensorClass->getFirstChild(); scChild != 0; scChild = scChild->getNextSibling()) { if (scChild->getNodeType() != DOMNode::ELEMENT_NODE) continue; // Skip char data - name2release = Translate(scChild->getNodeName()); + name2release = XMLString::transcode(scChild->getNodeName()); tagName = name2release; XMLString::release(&name2release); if (tagName == "param") { @@ -341,7 +270,7 @@ string tagName; else if (tagName == "sensortype") { map<string, string> stParams(scParams); // Initialised with all previous params const DOMElement *sensorType = dynamic_cast<DOMElement *>(scChild); - name2release = Translate(sensorType->getAttribute(Translate("name"))); + name2release = XMLString::transcode(sensorType->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); // @@ -365,10 +294,10 @@ string tagName; void Gmx2Geo::addParam(DOMNode *node, map<string, string> ¶ms) { const DOMElement *param = dynamic_cast<DOMElement *>(node); - char *name2release = Translate(param->getAttribute(Translate("name"))); + char *name2release = XMLString::transcode(param->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); - name2release = Translate(param->getAttribute(Translate("value"))); + name2release = XMLString::transcode(param->getAttribute(XMLString::transcode("value"))); string value(name2release); XMLString::release(&name2release); params[name] = value; diff --git a/DetectorDescription/GeoModelXml/src/GmxInterface.cxx b/DetectorDescription/GeoModelXml/src/GmxInterface.cxx index ae8a18a12e543c071404e5d1866da908d845ef0c..ce7296a7f719b50a42fe03a3699d6cbb4de0647d 100644 --- a/DetectorDescription/GeoModelXml/src/GmxInterface.cxx +++ b/DetectorDescription/GeoModelXml/src/GmxInterface.cxx @@ -8,15 +8,7 @@ // Use: create an instance of this, and pass a reference to it in the Gmx2Geo constructor. // #include "GeoModelXml/GmxInterface.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include "GeoModelKernel/GeoPVConstLink.h" #include "GeoModelKernel/Query.h" #include "GeoModelKernel/GeoPhysVol.h" @@ -29,51 +21,24 @@ int GmxInterface::sensorId(map<string, int> &/*index*/) { } void GmxInterface::addSensorType(string clas, string type, map<string, string> params) { + OUTPUT_STREAM; -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - - log << MSG::DEBUG << "GmxInterface::addSensorType called for class " << clas << "; type " << type << + msglog << MSG::DEBUG << "GmxInterface::addSensorType called for class " << clas << "; type " << type << "\n Parameter names and values:\n"; for (map<string, string>::iterator p = params.begin(); p != params.end(); ++p) { - log << " " << p->first << " = " << p->second << endmsg; - } -#else - std::cout << "GmxInterface::addSensorType called for class " << clas << "; type " << type << - "\n Parameter names and values:\n"; - - for (map<string, string>::iterator p = params.begin(); p != params.end(); ++p) { - std::cout << " " << p->first << " = " << p->second << std::endl; + msglog << " " << p->first << " = " << p->second << endmsg; } -#endif - } void GmxInterface::addSensor(string name, map<string, int> &index, int sequentialId, GeoVFullPhysVol *fpv) { + OUTPUT_STREAM; -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - - log << MSG::DEBUG << "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << - ". Indices: "; -#else - std::cout<< "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << - ". Indices: "; -#endif - + msglog << MSG::DEBUG << "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << + ". Indices: "; for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) { -#ifndef STANDALONE_GMX - log << i->second << " "; + msglog << i->second << " "; } - log << "\nSequential ID = " << sequentialId << endmsg; -#else - std::cout << i->second << " "; - } - std::cout << "\nSequential ID = " << sequentialId << std::endl; -#endif - + msglog << "\nSequential ID = " << sequentialId << endmsg; } void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFullPhysVol *fpv, @@ -81,9 +46,7 @@ void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFul // // Logvol name is not very useful (usually == AssemblyLV). Get PhysVol name (seems surprisingly awkward way needed) // -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); + OUTPUT_STREAM; /* Cannot get this to work. string name("New name"); GeoPVConstLink parent = fpv->getParent(); @@ -94,21 +57,13 @@ void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFul else { name = string("Something Wrong, fullPV not found in parent in GmxInterface::addAlignable"); } - log << MSG::DEBUG << "GmxInterface::addAlignable called for physvol name " << name << ". Level = " << level << ". Indices: "; + msglog << MSG::DEBUG << "GmxInterface::addAlignable called for physvol name " << name << ". Level = " << level << ". Indices: "; */ - log << MSG::DEBUG << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << - ". Level = " << level << ". Indices: "; - for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) { - log << i->second << " "; - } - log << endmsg; -#else - std::cout << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << + msglog << MSG::DEBUG << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << ". Level = " << level << ". Indices: "; for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) { - std::cout << i->second << " "; + msglog << i->second << " "; } - std::cout << std::endl; -#endif + msglog << endmsg; } diff --git a/DetectorDescription/GeoModelXml/src/GmxUtil.cxx b/DetectorDescription/GeoModelXml/src/GmxUtil.cxx index df9e0524d295fcbad3ecdfbe98948bccf56156f8..b1722a4b60a64ab7175039dad21fec970c0d02dc 100644 --- a/DetectorDescription/GeoModelXml/src/GmxUtil.cxx +++ b/DetectorDescription/GeoModelXml/src/GmxUtil.cxx @@ -1,17 +1,16 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ #include "GeoModelXml/GmxUtil.h" -#ifndef STANDALONE_GMX + +#include "GeoModelXml/OutputDirector.h" + +#ifndef GEOMODEL_STANDALONE_GMX #include "StoreGate/StoreGateSvc.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" #include "GeoModelInterfaces/StoredMaterialManager.h" -#else -#include <iostream> #endif + #include "GeoModelKernel/GeoElement.h" #include "GeoModelKernel/GeoMaterial.h" #include "GeoModelKernel/GeoBox.h" @@ -28,7 +27,7 @@ using namespace std; GmxUtil::GmxUtil(GmxInterface &gmxInterface) { m_gmxInterface = &gmxInterface; // -// Initialise the Evaluator +// Initialise the CLHEP::Evaluator // eval.setStdMath(); // @@ -36,9 +35,6 @@ GmxUtil::GmxUtil(GmxInterface &gmxInterface) { // When Geo2G4 finds any physvol using a logvol with material special::HyperUranium, it creates a G4Assembly // instead of a G4Volume. // -// NB elsewhere special::ether is used to indicate a G4Assembly; HyperUranium is used here as a way to distinguish GeoModelXml assemblies from other assemblies and trigger distinct behaviour with regard to the copyNumbers which are assigned (ITkScheme, wherein the SiHitIdentifier is used as the copyNumber) -// See ExtParameterisedVolumeBuilder::Build and Geo2G4AssemblyVolume::MakeImprint for how this propagates to G4 - m_assemblyLV = makeAssemblyLV(); // // Register tag handlers that produce a vector of items to add to the tree. @@ -55,6 +51,7 @@ GmxUtil::GmxUtil(GmxInterface &gmxInterface) { // Register tag handlers that produce GeoNodes. Only useful for those tags which // can appear in a long list in any order. So certainly all shapes; maybe others. // + geoItemRegistry.enregister("simplepolygonbrep", (Element2GeoItem *) &tagHandler.simplepolygonbrep); geoItemRegistry.enregister("box", (Element2GeoItem *) &tagHandler.box); geoItemRegistry.enregister("cons", (Element2GeoItem *) &tagHandler.cons); geoItemRegistry.enregister("generictrap", (Element2GeoItem *) &tagHandler.generictrap); @@ -92,15 +89,11 @@ double GmxUtil::evaluate(char const *expression) { } } if (isWhiteSpace) { // Catch a common error early and give best message possible -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "GeoModelXml Error processing Evaluator expression: empty expression. Exiting program.\n" << + OUTPUT_STREAM; + msglog << MSG::FATAL << "GeoModelXml Error processing Evaluator expression: empty expression. Exiting program.\n" << endmsg; -#else - std::cout <<"GeoModelXml Error processing CLHEP Evaluator expression: empty expression. Exiting program.\n"; throw runtime_error(string("evaluate: empty or white space expression. Last good expression was " + lastGoodExpression)); -#endif + } // // Process any []s. Contents are evaluated to in integer, then the [...] are replaced by @@ -113,25 +106,14 @@ double GmxUtil::evaluate(char const *expression) { // double result = eval.evaluate(noBrackets.c_str()); if (eval.status() != Evaluator::OK) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "GeoModelXml Error processing Evaluator expression. Error name <" << + OUTPUT_STREAM; + msglog << MSG::FATAL << "GeoModelXml Error processing Evaluator expression. Error name <" << eval.error_name() << ">" << endl << "Message: <"; eval.print_error(); - log << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n"; - log << noBrackets << endl; - log << string(eval.error_position(), '-') << '^' << '\n'; - log << "Exiting program.\n" << endmsg; -#else - std::cout << "GeoModelXml Error processing Evaluator expression. Error name <" << - eval.error_name() << ">" << std::endl << "Message: <"; - eval.print_error(); - std::cout << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n"; - std::cout << noBrackets << std::endl; - std::cout << string(eval.error_position(), '-') << '^' << '\n'; - std::cout << "Exiting program.\n" << std::endl; -#endif + msglog << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n"; + msglog << noBrackets << endl; + msglog << string(eval.error_position(), '-') << '^' << '\n'; + msglog << "Exiting program.\n" << endmsg; throw runtime_error(string("evaluate: invalid expression. Last good expression was <" + lastGoodExpression + ">")); } lastGoodExpression = strExpression; @@ -148,15 +130,8 @@ std::string GmxUtil::debracket(std::string expression) { } size_t nextClose = expression.find_first_of(']', lastOpen); if (nextClose == string::npos) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::ERROR << "debracket: unpaired opening [; expression was:\n " << expression << endmsg; -#else - std::cout<<"debracket: unpaired opening [; expression was:\n " << - expression << std::endl; -#endif - + OUTPUT_STREAM; + msglog << MSG::ERROR << "debracket: unpaired opening [; expression was:\n " << expression << endmsg; return expression; } string toEvaluate = expression.substr(lastOpen + 1, nextClose - lastOpen - 1); @@ -175,22 +150,21 @@ std::string GmxUtil::debracket(std::string expression) { } GeoLogVol * GmxUtil::makeAssemblyLV() { -#ifndef STANDALONE_GMX +#ifndef GEOMODEL_STANDALONE_GMX StoreGateSvc *pDetStore = 0; ISvcLocator *svcLocator = Gaudi::svcLocator(); - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); + OUTPUT_STREAM; StatusCode sc = svcLocator->service("DetectorStore", pDetStore); if (sc.isFailure()) { - log << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Detector Store" << endmsg; + msglog << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Detector Store" << endmsg; } else { DataHandle<StoredMaterialManager> theMaterialManager; sc = pDetStore->retrieve(theMaterialManager, "MATERIALS"); if(sc.isFailure()) { - log << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Material Manager" << endmsg; + msglog << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Material Manager" << endmsg; } else { const GeoMaterial *assembly_material = theMaterialManager->getMaterial("special::HyperUranium"); diff --git a/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx b/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx index ac82dd2da5b9e186bf7e2683c2f7c9443fd9aafb..f048236c49cd4c3224572bc795c63c936b07845f 100644 --- a/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx @@ -10,7 +10,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/IndexProcessor.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace std; @@ -20,11 +20,11 @@ void IndexProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNod char *name2release; - name2release = Translate(element->getAttribute(Translate("ref"))); + name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("ref"))); string name(name2release); XMLString::release(&name2release); - name2release = Translate(element->getAttribute(Translate("value"))); + name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("value"))); string value(name2release); XMLString::release(&name2release); diff --git a/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx b/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx index e60b2be593cde6598cadb6c83475d62a36bf697e..e16a339d07046be3fb12739d82434ceccd1a08d9 100644 --- a/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx @@ -11,14 +11,7 @@ // Add them to the physvol. // #include "GeoModelXml/LogvolProcessor.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif +#include "GeoModelXml/OutputDirector.h" #include <map> @@ -31,7 +24,7 @@ #include "GeoModelKernel/GeoVFullPhysVol.h" #include "GeoModelXml/GmxUtil.h" #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" // using namespace CLHEP; @@ -42,14 +35,11 @@ void LogvolProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNo GeoLogVol *lv; GeoNameTag *physVolName; -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); -#endif + OUTPUT_STREAM; gmxUtil.positionIndex.incrementLevel(); - char *name2release = Translate(element->getAttribute(Translate("name"))); + char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); // @@ -69,27 +59,21 @@ GeoNameTag *physVolName; // Get the shape. // DOMDocument *doc = element->getOwnerDocument(); - const XMLCh *shape = element->getAttribute(Translate("shape")); + const XMLCh *shape = element->getAttribute(XMLString::transcode("shape")); DOMElement *refShape = doc->getElementById(shape); // Check it is a shape... its parent should be a <shapes>. DTD cannot do this for us. DOMNode *parent = refShape->getParentNode(); - if (XMLString::compareIString(parent->getNodeName(), Translate("shapes")) != 0) { + if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("shapes")) != 0) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Processing logvol " << name << + msglog << MSG::FATAL << "Processing logvol " << name << ". Error in gmx file. An IDREF for a logvol shape did not refer to a shape.\n" << "Shape ref was " << shape << "; exiting" << endmsg; -#else - std::cout<<"Processing logvol " << name << - ". Error in gmx file. An IDREF for a logvol shape did not refer to a shape.\n" << - "Shape ref was " << shape << "; exiting" <<std::endl; -#endif exit (1); // Need to improve... } // // What sort of shape? // - name2release = Translate(refShape->getNodeName()); + name2release = XMLString::transcode(refShape->getNodeName()); string shapeType(name2release); XMLString::release(&name2release); @@ -97,20 +81,14 @@ GeoNameTag *physVolName; // // Get the material // - const XMLCh *material = element->getAttribute(Translate("material")); + const XMLCh *material = element->getAttribute(XMLString::transcode("material")); DOMElement *refMaterial = doc->getElementById(material); // Check it is a material... its parent should be a <materials>. DTD cannot do this for us. parent = refMaterial->getParentNode(); - if (XMLString::compareIString(parent->getNodeName(), Translate("materials")) != 0) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Processing logvol " << name << + if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("materials")) != 0) { + msglog << MSG::FATAL << "Processing logvol " << name << ". Error in gmx file. An IDREF for a logvol material did not refer to a material.\n" << "Material ref was " << material << "; exiting" << endmsg; -#else - std::cout<<"Processing logvol " << name << - ". Error in gmx file. An IDREF for a logvol material did not refer to a material.\n" << - "Material ref was " << material << "; exiting" <<std::endl; -#endif exit (1); // Need to improve... } @@ -132,7 +110,7 @@ GeoNameTag *physVolName; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { DOMElement *el = dynamic_cast<DOMElement *> (child); - name2release = Translate(el->getNodeName()); + name2release = XMLString::transcode(el->getNodeName()); string name(name2release); XMLString::release(&name2release); gmxUtil.processorRegistry.find(name)->process(el, gmxUtil, childrenAdd); @@ -142,7 +120,7 @@ GeoNameTag *physVolName; // Make a list of things to be added // toAdd.push_back(physVolName); - bool sensitive = element->hasAttribute(Translate("sensitive")); + bool sensitive = element->hasAttribute(XMLString::transcode("sensitive")); int sensId = 0; map<string, int> index; if (sensitive) { @@ -159,7 +137,7 @@ GeoNameTag *physVolName; // // Make a new PhysVol and add everything to it, then add it to the list of things for my caller to add // - char *toRelease = Translate(element->getAttribute(Translate("alignable"))); + char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable"))); string alignable(toRelease); XMLString::release(&toRelease); if (sensitive || (alignable.compare(string("true")) == 0)) { @@ -172,7 +150,7 @@ GeoNameTag *physVolName; // Add sensitive volumes to detector manager via GmxInterface // if (sensitive) { - name2release = Translate(element->getAttribute(Translate("sensitive"))); + name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("sensitive"))); string sensitiveName(name2release); XMLString::release(&name2release); gmxUtil.gmxInterface()->addSensor(sensitiveName, index, sensId, dynamic_cast<GeoVFullPhysVol *> (pv)); @@ -193,7 +171,7 @@ GeoNameTag *physVolName; void LogvolProcessor::zeroId(const xercesc::DOMElement *element) { - char *name2release = Translate(element->getAttribute(Translate("name"))); + char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(name2release); XMLString::release(&name2release); // diff --git a/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx index 3f5520c8d224711a420a8ec95ddcef1499992be1..fef75926f35cc40e012301e039ce16143e899a89 100644 --- a/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx @@ -6,25 +6,18 @@ // Process logvolref items: basically, just find the referenced logvol and call its processor. // #include "GeoModelXml/LogvolrefProcessor.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace std; using namespace xercesc; void LogvolrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); char *toRelease; @@ -36,26 +29,20 @@ char *toRelease; // // Check it is the right sort // - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("logvol")) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Error in xml/gmx file: logvolref " << Translate(idref) << " referenced a " << nodeName << + OUTPUT_STREAM; + msglog << MSG::FATAL << "Error in xml/gmx file: logvolref " << XMLString::transcode(idref) << " referenced a " << nodeName << " instead of a logvol." << endmsg; -#else - std::cout << "Error in xml/gmx file: logvolref " << Translate(idref) << " referenced a " << nodeName << - " instead of a logvol." << std::endl; -#endif exit(999); // Should do better... } // // Process it // - const XMLCh *zeroid = element->getAttribute(Translate("zeroid")); - if (XMLString::equals(zeroid, Translate("true"))) { + const XMLCh *zeroid = element->getAttribute(XMLString::transcode("zeroid")); + if (XMLString::equals(zeroid, XMLString::transcode("true"))) { gmxUtil.tagHandler.logvol.zeroId(elem); } diff --git a/DetectorDescription/GeoModelXml/src/MakeBox.cxx b/DetectorDescription/GeoModelXml/src/MakeBox.cxx index ae4c9a285bbe0693c1ac1013355fca15d27002fa..75a1e43c1c2d1aedf4e8e095bb12ac90dc2fcd5d 100644 --- a/DetectorDescription/GeoModelXml/src/MakeBox.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeBox.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoBox.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeCons.cxx b/DetectorDescription/GeoModelXml/src/MakeCons.cxx index e650c5cf3c16324034db5a9640ab95175f43833d..7acac8dc1281530262a83902f003c92a50fe6b21 100644 --- a/DetectorDescription/GeoModelXml/src/MakeCons.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeCons.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoCons.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeElement.cxx b/DetectorDescription/GeoModelXml/src/MakeElement.cxx index e37ceffd21495532bdda03e7b925a1ecc73e99c6..866ed1ce79335fc1dfc81f859d64819c1d3372f4 100644 --- a/DetectorDescription/GeoModelXml/src/MakeElement.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeElement.cxx @@ -7,7 +7,7 @@ #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/Units.h" #include "GeoModelKernel/GeoElement.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -23,21 +23,21 @@ double zVal, aVal; // // Get my Z // - z = Translate(element->getAttribute(Translate("Z"))); + z = XMLString::transcode(element->getAttribute(XMLString::transcode("Z"))); zVal = gmxUtil.evaluate(z); XMLString::release(&z); // // Get my A // - a = Translate(element->getAttribute(Translate("A"))); + a = XMLString::transcode(element->getAttribute(XMLString::transcode("A"))); aVal = gmxUtil.evaluate(a); XMLString::release(&a); // // Get my names // - name = Translate(element->getAttribute(Translate("name"))); - shortname = Translate(element->getAttribute(Translate("shortname"))); + name = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); + shortname = XMLString::transcode(element->getAttribute(XMLString::transcode("shortname"))); // // Create it // diff --git a/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx b/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx index c9e60458be8bff9d9bd615ef1a826f61caebea3a..df1a86fc8aa2e39b0cf75ca6ca88fa710cc36e2e 100644 --- a/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx @@ -10,7 +10,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoGenericTrap.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" @@ -29,10 +29,10 @@ double x; double y; for (int i = 0; i < (nParams - 1) / 2; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[2 * i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2 * i]))); x = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); - toRelease = Translate(element->getAttribute(Translate(parName[2 * i + 1]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2 * i + 1]))); y = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); vertices.push_back(GeoTwoVector(x, y)); @@ -40,7 +40,7 @@ double y; // // z-half-length // - toRelease = Translate(element->getAttribute(Translate(parName[16]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[16]))); p = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); diff --git a/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx b/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx index 4ff2728b6b3efafa75799d5cff357ff81c376614..49ab5599f6debe99b2d8b46e698ab6bea9cb2a3c 100644 --- a/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx @@ -6,23 +6,14 @@ // Then heavily modified #include "GeoModelXml/shape/MakeIntersection.h" #include <string> - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <xercesc/dom/DOM.hpp> -// #include <CLHEP/Geometry/Transform3D.h> -#include <Eigen/Dense> +#include "GeoModelKernel/GeoDefinitions.h" #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoShape.h" #include "GeoModelKernel/GeoTransform.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -34,14 +25,9 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti // // Process child elements; first is first shaperef; then transform; then second shaperef. // - typedef Eigen::Affine3d Transform3D; - GeoShape *first = 0; GeoShape *second = 0; - // HepGeom::Transform3D hepXf; - - Transform3D hepXf=Transform3D::Identity(); - + GeoTrf::Transform3D hepXf=GeoTrf::Transform3D::Identity(); int elementIndex = 0; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { // Skips text nodes @@ -51,7 +37,7 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti break; } case 1: { // Second element is transformation or transformationref - char *toRelease = Translate(child->getNodeName()); + char *toRelease = XMLString::transcode(child->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); GeoTransform *geoXf = nodeName == "transformation"? @@ -65,13 +51,8 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti break; } default: // More than 3 elements? -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "MakeIntersection: Incompatible DTD? got more than 3 child elements\n"; -#else - std::cout<<"MakeIntersection: Incompatible DTD? got more than 3 child elements\n"; -#endif + OUTPUT_STREAM; + msglog << MSG::FATAL << "MakeIntersection: Incompatible DTD? got more than 3 child elements\n"; } elementIndex++; } diff --git a/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx b/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx index d123a293952382454b88c98818898d56af9f17e5..67dec42699e262fbf3d3907bbbc02524255f28fe 100644 --- a/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx @@ -3,20 +3,12 @@ */ #include "GeoModelXml/MakeMaterial.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoMaterial.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" #include "GeoModelKernel/Units.h" @@ -34,43 +26,35 @@ double rho; char *fracString; double fraction; char *qString; -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); char *toRelease; -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); -#endif + OUTPUT_STREAM; // // Get material density scale-factor for the block of materials this one is in // DOMNode *parent = element->getParentNode(); - if (XMLString::compareIString(parent->getNodeName(), Translate("materials")) != 0) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Asked to make a material for non-material element. Parent element was " << - Translate(parent->getNodeName()) << "; error in gmx file; exiting" << endmsg; -#else - std::cout<<"Asked to make a material for non-material element. Parent element was " << - Translate(parent->getNodeName()) << "; error in gmx file; exiting" << std::endl; -#endif + if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("materials")) != 0) { + msglog << MSG::FATAL << "Asked to make a material for non-material element. Parent element was " << + XMLString::transcode(parent->getNodeName()) << "; error in gmx file; exiting" << endmsg; exit(1); } double scaleFactor(1.0); DOMElement *el = dynamic_cast<DOMElement *> (parent); -// if (el->hasAttribute(Translate("densitysf"))) { // Guaranteed by DTD; don't recheck. - densitySF = Translate(el->getAttribute(Translate("densitysf"))); +// if (el->hasAttribute(XMLString::transcode("densitysf"))) { // Guaranteed by DTD; don't recheck. + densitySF = XMLString::transcode(el->getAttribute(XMLString::transcode("densitysf"))); scaleFactor = gmxUtil.evaluate(densitySF); // } // // Get my name // - name = Translate(element->getAttribute(Translate("name"))); + name = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); // // Get my density // - density = Translate(element->getAttribute(Translate("density"))); + density = XMLString::transcode(element->getAttribute(XMLString::transcode("density"))); rho = gmxUtil.evaluate(density) * scaleFactor; XMLString::release(&density); // @@ -81,30 +65,25 @@ char *toRelease; // // Add my element contents // - DOMNodeList *elRefs = element->getElementsByTagName(Translate("elementref")); + DOMNodeList *elRefs = element->getElementsByTagName(XMLString::transcode("elementref")); int nElRefs = elRefs->getLength(); for (int i = 0; i < nElRefs; ++i) { DOMElement *elRef = dynamic_cast<DOMElement *>(elRefs->item(i)); idref = elRef->getAttribute(ref); DOMElement *elem = doc->getElementById(idref); - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("element")) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." + msglog << MSG::FATAL << "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." << endmsg; -#else - std::cout<< "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." - << std::endl; -#endif exit(999); // Should do better... } GeoElement *geoElem = (GeoElement *) gmxUtil.tagHandler.element.process(elem, gmxUtil); - fracString = Translate(elRef->getAttribute(Translate("fraction"))); + fracString = XMLString::transcode(elRef->getAttribute(XMLString::transcode("fraction"))); fraction = gmxUtil.evaluate(fracString); XMLString::release(&fracString); material->add(geoElem, fraction); @@ -112,33 +91,28 @@ char *toRelease; // // Add my chemical contents // - DOMNodeList *chemRefs = element->getElementsByTagName(Translate("chemicalref")); + DOMNodeList *chemRefs = element->getElementsByTagName(XMLString::transcode("chemicalref")); int nChemRefs = chemRefs->getLength(); for (int i = 0; i < nChemRefs; ++i) { DOMElement *chemRef = dynamic_cast<DOMElement *>(chemRefs->item(i)); idref = chemRef->getAttribute(ref); DOMElement *chem = doc->getElementById(idref); - toRelease = Translate(chem->getNodeName()); + toRelease = XMLString::transcode(chem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("chemical")) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << + msglog << MSG::FATAL << "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << endmsg; -#else - std::cout<< "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << - std::endl; -#endif exit(999); // Should do better... } - fracString = Translate(chemRef->getAttribute(Translate("fraction"))); + fracString = XMLString::transcode(chemRef->getAttribute(XMLString::transcode("fraction"))); fraction = gmxUtil.evaluate(fracString); XMLString::release(&fracString); // Loop over chemical contents, adding each element to this material - DOMNodeList *chemEls = chem->getElementsByTagName(Translate("elemcontent")); + DOMNodeList *chemEls = chem->getElementsByTagName(XMLString::transcode("elemcontent")); int nChemEls = chemEls->getLength(); vector<GeoElement *> geoElem; vector<double> atomicWeight; @@ -149,24 +123,19 @@ char *toRelease; idref = chemEl->getAttribute(ref); DOMElement *elem = doc->getElementById(idref); - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("element")) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << + msglog << MSG::FATAL << "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." << endmsg; -#else - std::cout<<"Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." << - std::endl; -#endif exit(999); // Should do better... } geoElem.push_back((GeoElement *) gmxUtil.tagHandler.element.process(elem, gmxUtil)); atomicWeight.push_back(geoElem.back()->getA()); - qString = Translate(chemEl->getAttribute(Translate("quantity"))); + qString = XMLString::transcode(chemEl->getAttribute(XMLString::transcode("quantity"))); formula.push_back(gmxUtil.evaluate(qString)); XMLString::release(&qString); @@ -180,30 +149,25 @@ char *toRelease; // // Add my material contents // - elRefs = element->getElementsByTagName(Translate("materialref")); + elRefs = element->getElementsByTagName(XMLString::transcode("materialref")); nElRefs = elRefs->getLength(); for (int i = 0; i < nElRefs; ++i) { DOMElement *elRef = dynamic_cast<DOMElement *>(elRefs->item(i)); idref = elRef->getAttribute(ref); DOMElement *elem = doc->getElementById(idref); - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("material")) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << + msglog << MSG::FATAL << "Error in xml/gmx file: A materialref referenced a " << nodeName << " instead of a material." << endmsg; -#else - std::cout<<"Error in xml/gmx file: A materialref referenced a " << nodeName << " instead of a material." << - std::endl; -#endif exit(999); // Should do better... } GeoMaterial *geoMaterial = (GeoMaterial *) gmxUtil.tagHandler.material.process(elem, gmxUtil); - fracString = Translate(elRef->getAttribute(Translate("fraction"))); + fracString = XMLString::transcode(elRef->getAttribute(XMLString::transcode("fraction"))); fraction = gmxUtil.evaluate(fracString); XMLString::release(&fracString); material->add(geoMaterial, fraction); diff --git a/DetectorDescription/GeoModelXml/src/MakePara.cxx b/DetectorDescription/GeoModelXml/src/MakePara.cxx index bcb7e788d7b34d3196b65b4ee4a57557f74dac5b..e1aaef2b76e48c82cc6b633b9e9b9dab77eb57c4 100644 --- a/DetectorDescription/GeoModelXml/src/MakePara.cxx +++ b/DetectorDescription/GeoModelXml/src/MakePara.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoPara.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakePcon.cxx b/DetectorDescription/GeoModelXml/src/MakePcon.cxx index a1a924c25675fef42f953d4464085efd3e148622..f333f5fddbdad46207339c20b50526d14501e5c0 100644 --- a/DetectorDescription/GeoModelXml/src/MakePcon.cxx +++ b/DetectorDescription/GeoModelXml/src/MakePcon.cxx @@ -8,7 +8,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoPcon.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -22,7 +22,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } @@ -36,7 +36,7 @@ char *toRelease; double rMaxPlane = 0.; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { - toRelease = Translate(child->getNodeName()); + toRelease = XMLString::transcode(child->getNodeName()); std::string name(toRelease); XMLString::release(&toRelease); if (name == "addplane") { diff --git a/DetectorDescription/GeoModelXml/src/MakePgon.cxx b/DetectorDescription/GeoModelXml/src/MakePgon.cxx index 426c373434e92a49771027703fa384122f7bb028..a57daf51291dc8d8c75c90ec78eb015d5997b4ff 100644 --- a/DetectorDescription/GeoModelXml/src/MakePgon.cxx +++ b/DetectorDescription/GeoModelXml/src/MakePgon.cxx @@ -8,7 +8,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoPgon.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -22,7 +22,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } @@ -36,7 +36,7 @@ char *toRelease; double rMaxPlane = 0.; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { - toRelease = Translate(child->getNodeName()); + toRelease = XMLString::transcode(child->getNodeName()); std::string name(toRelease); XMLString::release(&toRelease); if (name == "addplane") { diff --git a/DetectorDescription/GeoModelXml/src/MakeRotation.cxx b/DetectorDescription/GeoModelXml/src/MakeRotation.cxx index 6c88dfa3311b98f10a28392e9905a9dd583ca84b..db97f3f0159be6d74f89d148e3e23be5ec59c265 100644 --- a/DetectorDescription/GeoModelXml/src/MakeRotation.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeRotation.cxx @@ -6,10 +6,10 @@ #include <xercesc/dom/DOM.hpp> // #include <CLHEP/Geometry/Transform3D.h> // #include <CLHEP/Geometry/Vector3D.h> -#include "GeoModelXml/translate.h" +#include "GeoModelKernel/GeoDefinitions.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" - MakeRotation::MakeRotation() {} using namespace xercesc; @@ -23,7 +23,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(rotation->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(rotation->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } @@ -31,4 +31,5 @@ char *toRelease; temp = GeoTrf::AngleAxis3D(p[0], GeoTrf::Vector3D(p[1], p[2], p[3])); return temp; + } diff --git a/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx b/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx index 55ed872cfa8268dc187fbedb964ef2fe15db4493..32f4f9f94f2c1379a103b460e5eb305642dc9d49 100644 --- a/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx @@ -6,19 +6,11 @@ // Process transformationref items: basically, just find the referenced transform and call its processor. // #include "GeoModelXml/shape/MakeShaperef.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/GmxUtil.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" using namespace std; using namespace xercesc; @@ -27,30 +19,23 @@ const RCBase *MakeShaperef::process(const DOMElement *element, GmxUtil &gmxUtil) // // Get the referenced shape // - const XMLCh *idref = element->getAttribute(Translate("ref")); + const XMLCh *idref = element->getAttribute(XMLString::transcode("ref")); DOMDocument *doc = element->getOwnerDocument(); DOMElement *shape = doc->getElementById(idref); // // Check it is the right sort: it's parent should be a shapes // DOMNode *parent = shape->getParentNode(); - if (XMLString::compareIString(parent->getNodeName(), Translate("shapes")) != 0) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << + if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("shapes")) != 0) { + OUTPUT_STREAM; + msglog << MSG::FATAL << "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << idref << "; exiting" << endmsg; -#else - std::cout<< "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << - idref << "; exiting" << std::endl; -#endif - exit (1); // Need to improve... } // // Get what sort of shape // - char *toRelease = Translate(shape->getNodeName()); + char *toRelease = XMLString::transcode(shape->getNodeName()); string tag(toRelease); XMLString::release(&toRelease); // diff --git a/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx b/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3150a3dd0b99e210c755ec3cfad7d1ce6dc25158 --- /dev/null +++ b/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx @@ -0,0 +1,74 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +#include <string> +#include <vector> +#include <sstream> +#include <stdexcept> + +#include "GeoModelXml/OutputDirector.h" + +#include "GeoModelXml/shape/MakeSimplePolygonBrep.h" +#include <xercesc/dom/DOM.hpp> +#include "GeoModelKernel/RCBase.h" +#include "GeoModelKernel/GeoSimplePolygonBrep.h" +#include "xercesc/util/XMLString.hpp" +#include "GeoModelXml/GmxUtil.h" +using namespace xercesc; + +MakeSimplePolygonBrep::MakeSimplePolygonBrep() {} + +const RCBase * MakeSimplePolygonBrep::make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const { +const int nParams = 3; +char const *parName[nParams] = {"xpoints", "ypoints", "zhalflength"}; +double z; +std::vector <double> x; +std::vector <double> y; + +char *toRelease; + + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[0]))); + std::string xPoints(toRelease); + XMLString::release(&toRelease); + + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[1]))); + std::string yPoints(toRelease); + XMLString::release(&toRelease); + + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2]))); + z = gmxUtil.evaluate(toRelease); + XMLString::release(&toRelease); + + GeoSimplePolygonBrep * poly = new GeoSimplePolygonBrep(z); + + std::istringstream xSS(xPoints); + while (!xSS.eof()) { + std::string upToNextComma; + getline( xSS, upToNextComma, ';' ); + x.push_back(gmxUtil.evaluate(upToNextComma.c_str())); + } + + std::istringstream ySS(yPoints); + while (!ySS.eof()) { + std::string upToNextComma; + getline( ySS, upToNextComma, ';' ); + y.push_back(gmxUtil.evaluate(upToNextComma.c_str())); + } + + int nx = x.size(); + int ny = y.size(); + + if (nx < 3 || ny < 3 || nx != ny) { + OUTPUT_STREAM; + msglog << MSG::ERROR << "MakeSimplePolygonBrep: Bad xpoints and/or ypoints\n"; + throw std::runtime_error(std::string("MakeSimplePolygonBrep: Unequal number of x and y points, or less than 3\n\n") + + "xpoints was:\n" + xPoints + "\nypoints was:\n" + yPoints + "\n\n"); + } + + for (int i = 0; i < nx; ++i) { + poly->addVertex(x[i], y[i]); + } + + return poly; + +} diff --git a/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx b/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx index a2982ccff830ab2ceca4933d86d60f416f2d938d..699af4a9c7cbfb393be3dd61b14d86d934308c83 100644 --- a/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx @@ -5,23 +5,16 @@ // Automatically generated code from /home/hessey/prog/gmx2geo/makeshape // Then heavily modified #include "GeoModelXml/shape/MakeSubtraction.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> // #include <CLHEP/Geometry/Transform3D.h> +#include "GeoModelKernel/GeoDefinitions.h" #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoShape.h" #include "GeoModelKernel/GeoTransform.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -33,11 +26,9 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil // // Process child elements; first is first shaperef; then transformation; then second shaperef. // - typedef Eigen::Affine3d Transform3D; - GeoShape *first = 0; GeoShape *second = 0; - Transform3D hepXf=Transform3D::Identity(); + GeoTrf::Transform3D hepXf=GeoTrf::Transform3D::Identity(); int elementIndex = 0; for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { // Skips text nodes @@ -47,7 +38,7 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil break; } case 1: { // Second element is transformation or transformationref - char *toRelease = Translate(child->getNodeName()); + char *toRelease = XMLString::transcode(child->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); GeoTransform *geoXf = nodeName == "transformation"? @@ -61,13 +52,8 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil break; } default: // More than 3 elements? -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "MakeSubtraction: Incompatible DTD? got more than 3 child elements" << endmsg; -#else - std::cout<<"MakeSubtraction: Incompatible DTD? got more than 3 child elements" << std::endl; -#endif + OUTPUT_STREAM; + msglog << MSG::FATAL << "MakeSubtraction: Incompatible DTD? got more than 3 child elements" << endmsg; } elementIndex++; } diff --git a/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx b/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx index 1a154a724309b300110d22b3faf729d4f041ba78..fcba4039d8ece7b50ae650a2d69a0b59cea71e53 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx @@ -8,10 +8,10 @@ #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoTransform.h" #include "GeoModelKernel/GeoAlignableTransform.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" -#include <Eigen/Dense> +#include "GeoModelKernel/GeoDefinitions.h" using namespace xercesc; using namespace std; @@ -20,14 +20,13 @@ MakeTransformation::MakeTransformation() {} const RCBase * MakeTransformation::make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const { char *name2release; -typedef Eigen::Affine3d Transform3D; - Transform3D hepTransform=Transform3D::Identity(); // Starts as Identity transform + GeoTrf::Transform3D hepTransform=GeoTrf::Transform3D::Identity(); // Starts as Identity transform // // Add my element contents // for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { - name2release = Translate(child->getNodeName()); + name2release = XMLString::transcode(child->getNodeName()); string name(name2release); DOMElement *el = dynamic_cast<DOMElement *>(child); if (name == string("translation")) { @@ -47,7 +46,7 @@ typedef Eigen::Affine3d Transform3D; // // Create and return GeoModel transform // - char *toRelease = Translate(element->getAttribute(Translate("alignable"))); + char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable"))); string alignable(toRelease); XMLString::release(&toRelease); if (alignable.compare(string("true")) == 0) { diff --git a/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx b/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx index e4d9e7278a034e1571b53d5e970e2e7b0efe6e52..a424e36a893cd445043bb7dd8501d04f5d5af5a2 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx @@ -6,26 +6,18 @@ // Process transformationref items: basically, just find the referenced transform and call its processor. // #include "GeoModelXml/MakeTransformationref.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/GmxUtil.h" #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" using namespace std; using namespace xercesc; const RCBase *MakeTransformationref::make(const DOMElement *element, GmxUtil &gmxUtil) const { -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); char *toRelease; @@ -37,19 +29,13 @@ char *toRelease; // // Check it is the right sort // - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != string("transformation")) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "Error in xml/gmx file: transformationref " << Translate(idref) << " referenced a " << nodeName << + OUTPUT_STREAM; + msglog << MSG::FATAL << "Error in xml/gmx file: transformationref " << XMLString::transcode(idref) << " referenced a " << nodeName << " instead of a transformation." << endmsg; -#else - std::cout<<"Error in xml/gmx file: transformationref " << Translate(idref) << " referenced a " << nodeName << - " instead of a transformation." <<std::endl; -#endif exit(999); // Should do better... } // diff --git a/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx b/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx index d0de25a58c5b9e495b80f0778b06968be13a3820..7068dd222ffb8f1cfa57fe1c185eb8b26ba16235 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx @@ -6,7 +6,7 @@ #include <xercesc/dom/DOM.hpp> //#include <CLHEP/Geometry/Transform3D.h> //#include <CLHEP/Geometry/Vector3D.h> -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" #include "GeoModelKernel/GeoDefinitions.h" @@ -24,10 +24,9 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(translation->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(translation->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } - GeoTrf::Translate3D temp(p[0], p[1], p[2]); - return temp; + return GeoTrf::Translate3D(p[0], p[1], p[2]); } diff --git a/DetectorDescription/GeoModelXml/src/MakeTrap.cxx b/DetectorDescription/GeoModelXml/src/MakeTrap.cxx index 78f77aa0fec39c4a5efa4711b35fa433b0d43cee..c7c64b3eb5833b195c5eaf3dc4fd6ff9a9fc2f89 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTrap.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTrap.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoTrap.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeTrd.cxx b/DetectorDescription/GeoModelXml/src/MakeTrd.cxx index 668154a06566bd85b1cfb9fc4d0c02abea2bab5b..afe9dd86a33b0f1c5eb78ba8f6cba940bc2d0347 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTrd.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTrd.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoTrd.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeTube.cxx b/DetectorDescription/GeoModelXml/src/MakeTube.cxx index 27e318707862ac70c8a8b9374fcf4084ef04166a..b8690d063d92d65a539b3b2d769cf289510f81b8 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTube.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTube.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoTube.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeTubs.cxx b/DetectorDescription/GeoModelXml/src/MakeTubs.cxx index b71bdaa78611ad39a46d50f75992e3f039efd95c..b0d4d79bfca7188f9ad57e7b06f1e2ee161a434c 100644 --- a/DetectorDescription/GeoModelXml/src/MakeTubs.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeTubs.cxx @@ -7,7 +7,7 @@ #include <xercesc/dom/DOM.hpp> #include "GeoModelKernel/RCBase.h" #include "GeoModelKernel/GeoTubs.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -21,7 +21,7 @@ double p[nParams]; char *toRelease; for (int i = 0; i < nParams; ++i) { - toRelease = Translate(element->getAttribute(Translate(parName[i]))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i]))); p[i] = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); } diff --git a/DetectorDescription/GeoModelXml/src/MakeUnion.cxx b/DetectorDescription/GeoModelXml/src/MakeUnion.cxx index f28be31d17598fa76fce4579c0878c34aac0c5f9..d23afc4ffe60ca12ce28bdfec01d5527e397e4a4 100644 --- a/DetectorDescription/GeoModelXml/src/MakeUnion.cxx +++ b/DetectorDescription/GeoModelXml/src/MakeUnion.cxx @@ -4,15 +4,7 @@ #include "GeoModelXml/shape/MakeUnion.h" #include <string> - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <xercesc/dom/DOM.hpp> // #include <CLHEP/Geometry/Transform3D.h> #include "GeoModelKernel/RCBase.h" @@ -20,7 +12,7 @@ #include "GeoModelKernel/GeoTransform.h" #include "GeoModelKernel/GeoDefinitions.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GmxUtil.h" using namespace xercesc; @@ -44,7 +36,7 @@ const RCBase * MakeUnion::make(const xercesc::DOMElement *element, GmxUtil &gmxU break; } case 1: { // Second element is transformation or transformationref - char *toRelease = Translate(child->getNodeName()); + char *toRelease = XMLString::transcode(child->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); GeoTransform *geoXf = nodeName == "transformation"? @@ -58,13 +50,8 @@ const RCBase * MakeUnion::make(const xercesc::DOMElement *element, GmxUtil &gmxU break; } default: // More than 3 elements? -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << "MakeUnion: Incompatible DTD? got more than 3 child elements" << endmsg; -#else - std::cout<<"MakeUnion: Incompatible DTD? got more than 3 child elements" << std::endl; -#endif + OUTPUT_STREAM; + msglog << MSG::FATAL << "MakeUnion: Incompatible DTD? got more than 3 child elements" << endmsg; } elementIndex++; } diff --git a/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx b/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx index 6abdd3073910fa0145c00bd09b1c9694cf30db8f..b579b5199c24631ecfd90fbfe0b0df07bbfc96af 100644 --- a/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx @@ -21,14 +21,7 @@ // #include "GeoModelXml/MulticopyProcessor.h" -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <sstream> #include <string> #include <cstdlib> @@ -38,9 +31,8 @@ #include "GeoModelKernel/GeoVFullPhysVol.h" #include "GeoModelKernel/GeoNameTag.h" #include "GeoModelKernel/GeoDefinitions.h" -// #include <CLHEP/Geometry/Transform3D.h> -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include "GeoModelXml/GeoNodeList.h" #include "GeoModelXml/ProcessorRegistry.h" #include "GeoModelXml/GmxUtil.h" @@ -51,27 +43,24 @@ using namespace std; void MulticopyProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { char *toRelease; -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); -#endif + OUTPUT_STREAM; - bool alignable = element->hasAttribute(Translate("alignable")); + bool alignable = element->hasAttribute(XMLString::transcode("alignable")); // // How many copies? // int nCopies; - toRelease = Translate(element->getAttribute(Translate("n"))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("n"))); nCopies = gmxUtil.evaluate(toRelease); XMLString::release(&toRelease); // // See if it is in the map; if so, xfList is already done. If not, fill xfList. // - toRelease = Translate(element->getAttribute(Translate("name"))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("name"))); string name(toRelease); XMLString::release(&toRelease); map<string, GeoNodeList>::iterator entry; @@ -86,22 +75,16 @@ DOMDocument *doc = element->getOwnerDocument(); // Loopvar Variable name // string varname, firstElement; - bool hasVarname = (element->getAttributeNode(Translate("loopvar")) != 0); + bool hasVarname = (element->getAttributeNode(XMLString::transcode("loopvar")) != 0); if (hasVarname) { - toRelease = Translate(element->getAttribute(Translate("loopvar"))); + toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("loopvar"))); varname = toRelease; XMLString::release(&toRelease); // Check it is a vector firstElement = varname + "_0"; if (!gmxUtil.eval.findVariable(firstElement.c_str())) { -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << + msglog << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << ". Found loopvar set to " << varname << ", but no vector with that name has been defined." << endmsg; -#else - std::cout<< "Error in .gmx file. Processing multicopy element with name " << name << - ". Found loopvar set to " << varname << ", but no vector with that name has been defined." << std::endl; -#endif - exit(999); // Should do better } } @@ -109,7 +92,7 @@ DOMDocument *doc = element->getOwnerDocument(); // Get the transformation-element // DOMElement *elXf = element->getFirstElementChild(); - toRelease = Translate(elXf->getNodeName()); + toRelease = XMLString::transcode(elXf->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); Element2GeoItem *xFormProcessor; @@ -118,13 +101,8 @@ DOMDocument *doc = element->getOwnerDocument(); xFormProcessor = (Element2GeoItem *) &(gmxUtil.tagHandler.transformation); } else { // Not OK -#ifndef STANDALONE_GMX - log << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << - ". \nIt gives loopvar therefore should have a <transformation> and not a <transformationref> (despite the DTD)\n"; -#else - std::cout<<"Error in .gmx file. Processing multicopy element with name " << name << + msglog << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << ". \nIt gives loopvar therefore should have a <transformation> and not a <transformationref> (despite the DTD)\n"; -#endif exit(999); // Should do better } } @@ -180,7 +158,7 @@ DOMDocument *doc = element->getOwnerDocument(); // Get object to be copied // DOMElement *object = element->getLastElementChild(); - toRelease = Translate(object->getNodeName()); + toRelease = XMLString::transcode(object->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); ElementProcessor *objectProcessor = gmxUtil.processorRegistry.find(nodeName); @@ -199,29 +177,24 @@ DOMDocument *doc = element->getOwnerDocument(); gmxUtil.tagHandler.assembly.zeroId(elem); } else if (nodeName == "transform") { // Object is either an assemlyref or logvolref, and there is only one of these - DOMNodeList *lvList = element->getElementsByTagName(Translate("logvolref")); + DOMNodeList *lvList = element->getElementsByTagName(XMLString::transcode("logvolref")); if (lvList->getLength() > 0) { - const XMLCh *idref = dynamic_cast<DOMElement *> (lvList->item(0))->getAttribute(Translate("ref")); + const XMLCh *idref = dynamic_cast<DOMElement *> (lvList->item(0))->getAttribute(XMLString::transcode("ref")); DOMElement *lv = doc->getElementById(idref); gmxUtil.tagHandler.logvol.zeroId(lv); } else { - DOMNodeList *asList = element->getElementsByTagName(Translate("assemblyref")); + DOMNodeList *asList = element->getElementsByTagName(XMLString::transcode("assemblyref")); if (asList->getLength() > 0) { - const XMLCh *idref = dynamic_cast<DOMElement *> (asList->item(0))->getAttribute(Translate("ref")); + const XMLCh *idref = dynamic_cast<DOMElement *> (asList->item(0))->getAttribute(XMLString::transcode("ref")); DOMDocument *doc = element->getOwnerDocument(); DOMElement *as = doc->getElementById(idref); gmxUtil.tagHandler.assembly.zeroId(as); } else { -#ifndef STANDALONE_GMX - log << MSG::FATAL << + msglog << MSG::FATAL << "multicopyprocessor: error in " << name << ". <transform> object was neither assemblyref nor logvolref\n" << "Exiting Athena" << endmsg; -#else - std::cout<<"multicopyprocessor: error in " << name << ". <transform> object was neither assemblyref nor logvolref\n" - << "Exiting Athena" << std::endl; -#endif exit(999); // Should do better } } @@ -240,7 +213,7 @@ DOMDocument *doc = element->getOwnerDocument(); // int level; if (alignable) { - istringstream(Translate(element->getAttribute(Translate("alignable")))) >> level; + istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")))) >> level; } // // Add transforms and physvols etc. to list to be added diff --git a/DetectorDescription/GeoModelXml/src/PositionIndex.cxx b/DetectorDescription/GeoModelXml/src/PositionIndex.cxx index 0150212f4c1d88ab9477249863f6c42469cc7fa9..162528e4d2c97ce5afb3731600c5274e6e6f0086 100644 --- a/DetectorDescription/GeoModelXml/src/PositionIndex.cxx +++ b/DetectorDescription/GeoModelXml/src/PositionIndex.cxx @@ -3,15 +3,7 @@ */ #include <cstdlib> - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <vector> #include <string> #include "ExpressionEvaluator/Evaluator.h" @@ -106,22 +98,13 @@ void PositionIndex::indices(map<string, int> &index, Evaluator &eval) { string name = *n; index[name] = (int) eval.evaluate(m_formula[name].c_str()); if (eval.status() != Evaluator::OK) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL << + OUTPUT_STREAM; + msglog << MSG::FATAL << "GeoModelXml Error processing Evaluator expression for PositionIndex. Error name " << eval.error_name() << endl << "Message: "; eval.print_error(); - log << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << + msglog << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << endmsg; -#else - std::cout<<"GeoModelXml Error processing Evaluator expression for PositionIndex. Error name " << - eval.error_name() << endl << "Message: "; - eval.print_error(); - std::cout << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << - std::endl; -#endif exit(999); // Should do better... } // diff --git a/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx b/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx index e8ee0ed8ee0180e00ab348616f1b578469e23daf..49be4a154ea2b2b7c6b29a391004401ce33410e4 100644 --- a/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx +++ b/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx @@ -3,64 +3,37 @@ */ #include "GeoModelXml/StrictErrorHandler.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include <xercesc/dom/DOMError.hpp> #include <xercesc/dom/DOMLocator.hpp> - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif +#include "GeoModelXml/OutputDirector.h" StrictErrorHandler::StrictErrorHandler(): m_SawErrors(false) {} StrictErrorHandler::~StrictErrorHandler() {} +using namespace xercesc; + bool StrictErrorHandler::handleError(const xercesc::DOMError &domError) { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::ERROR << "StrictErrorHandler: Handle an error\n"; -#else - std::cout << "StrictErrorHandler: Handle an error\n"; -#endif + OUTPUT_STREAM; + msglog << MSG::ERROR << "StrictErrorHandler: Handle an error\n"; m_SawErrors = true; switch (domError.getSeverity()) { case (xercesc::DOMError::DOM_SEVERITY_WARNING): -#ifndef STANDALONE_GMX - log << "\nWarning at file \n"; -#else - std::cout<< "\nWarning at file \n"; -#endif + msglog << "\nWarning at file \n"; break; case (xercesc::DOMError::DOM_SEVERITY_ERROR): -#ifndef STANDALONE_GMX - log << "\nError at file \n"; -#else - std::cout<< "\nError at file \n"; -#endif + msglog << "\nError at file \n"; break; default: -#ifndef STANDALONE_GMX - log << "\nFatal Error at file \n"; - } - log << Translate(domError.getLocation()->getURI()) - << ", line " << domError.getLocation()->getLineNumber() - << ", char " << domError.getLocation()->getColumnNumber() - << "\n Message: " << Translate(domError.getMessage()) << endmsg; -#else - std::cout << "\nFatal Error at file \n"; + msglog << "\nFatal Error at file \n"; } - std::cout << Translate(domError.getLocation()->getURI()) + msglog << XMLString::transcode(domError.getLocation()->getURI()) << ", line " << domError.getLocation()->getLineNumber() << ", char " << domError.getLocation()->getColumnNumber() - << "\n Message: " << Translate(domError.getMessage()) << std::endl; -#endif + << "\n Message: " << XMLString::transcode(domError.getMessage()) << endmsg; return true; } diff --git a/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx b/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx index 5c3e567f6a57e33b938730e05a743e6081cc5556..9f67170d1878dcd9f9ff5d10685f76d4360a9f12 100644 --- a/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx @@ -22,7 +22,8 @@ #include "GeoModelKernel/GeoVFullPhysVol.h" #include "GeoModelKernel/GeoAlignableTransform.h" #include "GeoModelXml/GmxUtil.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" + // using namespace CLHEP; using namespace std; @@ -30,13 +31,13 @@ using namespace xercesc; void TransformProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { char *tagName; - bool alignable = element->hasAttribute(Translate("alignable")); + bool alignable = element->hasAttribute(XMLString::transcode("alignable")); // // Do second element first, to find what sort of transform is needed (shape or logvol etc.?) // GeoNodeList objectsToAdd; DOMElement *object = element->getLastElementChild(); - tagName = Translate(object->getTagName()); + tagName = XMLString::transcode(object->getTagName()); string objectName(tagName); gmxUtil.processorRegistry.find(objectName)->process(object, gmxUtil, objectsToAdd); XMLString::release(&tagName); @@ -44,7 +45,7 @@ char *tagName; // Get the transformation // DOMElement *transformation = element->getFirstElementChild(); - tagName = Translate(transformation->getTagName()); // transformation or transformationref + tagName = XMLString::transcode(transformation->getTagName()); // transformation or transformationref // ******* Should check here that an alignable transform is given an alignable transformation and object; to be done toAdd.push_back((GeoGraphNode *)gmxUtil.geoItemRegistry.find(string(tagName))->process(transformation, gmxUtil)); XMLString::release(&tagName); @@ -53,7 +54,7 @@ char *tagName; // if (alignable) { int level; - istringstream(Translate(element->getAttribute(Translate("alignable")))) >> level; + istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")))) >> level; //cout << "\nTransformProcessor: Add Alignable named " << ((GeoNameTag *) objectsToAdd[0])->getName() << " with GeoModel id " << //((GeoIdentifierTag *) objectsToAdd[1])->getIdentifier() << endl; // commenting out this cout, as it is spamming all ITk jobs with tens of thousands of lines of output map<string, int> index; diff --git a/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx index b6c7c4235df1f724dfa9f65aaa7e437ee19171fc..82d351d46af36776c13bbbe4fe41055b501a0ae3 100644 --- a/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx +++ b/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx @@ -6,26 +6,18 @@ // Process transformref items: basically, just find the referenced transform and call its processor. // #include "GeoModelXml/TransformrefProcessor.h" - -#ifndef STANDALONE_GMX -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/IMessageSvc.h" -#else -#include <iostream> -#endif - +#include "GeoModelXml/OutputDirector.h" #include <string> #include <xercesc/dom/DOM.hpp> #include "GeoModelXml/GmxUtil.h" #include "GeoModelXml/GeoNodeList.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" using namespace std; using namespace xercesc; void TransformrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) { -const XMLCh *ref = Translate("ref"); +const XMLCh *ref = XMLString::transcode("ref"); const XMLCh *idref; DOMDocument *doc = element->getOwnerDocument(); char *toRelease; @@ -37,19 +29,13 @@ char *toRelease; // // Check it is the right sort // - toRelease = Translate(elem->getNodeName()); + toRelease = XMLString::transcode(elem->getNodeName()); string nodeName(toRelease); XMLString::release(&toRelease); if (nodeName != "transform") { -#ifndef STANDALONE_GMX - ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml"); - MsgStream log(&(*msgh), "GeoModelXml"); - log << MSG::FATAL<< "Error in xml/gmx file: transformref " << Translate(idref) << " referenced a " << nodeName << + OUTPUT_STREAM; + msglog << MSG::FATAL<< "Error in xml/gmx file: transformref " << XMLString::transcode(idref) << " referenced a " << nodeName << " instead of a logvol." << endmsg; -#else - std::cout <<"Error in xml/gmx file: transformref " << Translate(idref) << " referenced a " << nodeName << - " instead of a logvol." << std::endl; -#endif exit(999); // Should do better... } // diff --git a/DetectorDescription/GeoModelXml/src/createdomdocument.cxx b/DetectorDescription/GeoModelXml/src/createdomdocument.cxx index 39366f72caca71c0d1196a65eb0dd775854e5afb..2222a0186da1850f4e637f6fcd5df38a2da84f87 100644 --- a/DetectorDescription/GeoModelXml/src/createdomdocument.cxx +++ b/DetectorDescription/GeoModelXml/src/createdomdocument.cxx @@ -17,7 +17,7 @@ #include <xercesc/dom/DOMImplementationLS.hpp> #include <xercesc/dom/DOMImplementationRegistry.hpp> #include "GeoModelXml/StrictErrorHandler.h" -#include "GeoModelXml/translate.h" +#include "xercesc/util/XMLString.hpp" #include <iostream> #include <stdexcept> @@ -34,7 +34,7 @@ DOMDocument *createDOMDocument(string xmlFile, DOMLSParser *parser, unsigned int XMLPlatformUtils::Initialize(); } catch (const xercesc::XMLException &toCatch) { - char *message = Translate(toCatch.getMessage()); + char *message = XMLString::transcode(toCatch.getMessage()); cout << "XercesC error during initialization: " << message << "\n"; XMLString::release(&message); return 0; @@ -79,7 +79,7 @@ cout << "Decompressed it\n"; else { decompressed = xmlFile; } - xmlCh = Translate(decompressed.c_str()); + xmlCh = XMLString::transcode(decompressed.c_str()); cout << "Transcoded it\n"; DOMLSInput *input = impl->createLSInput(); input->setStringData(xmlCh); @@ -88,7 +88,7 @@ cout << "Parsed it\n"; } if (errorHandler.getSawErrors()) { cout << "Oh oh, saw errors. \n"; -if (flags & 0x1) cout << "\n\n\n" << Translate(xmlCh) << "\n\n\n"; +if (flags & 0x1) cout << "\n\n\n" << XMLString::transcode(xmlCh) << "\n\n\n"; return 0; } else { @@ -101,13 +101,13 @@ if (flags & 0x1) cout << "\n\n\n" << Translate(xmlCh) << "\n\n\n"; } } catch (const XMLException &toCatch) { - char *message = Translate(toCatch.getMessage()); + char *message = XMLString::transcode(toCatch.getMessage()); cout << "Parse-file xml exception: \n" << message << "\n"; XMLString::release(&message); return 0; } catch (const DOMException &toCatch) { - char *message = Translate(toCatch.msg); + char *message = XMLString::transcode(toCatch.msg); cout << "DOM exception: \n" << message << "\n"; XMLString::release(&message); return 0;