From 4bb0b7f6e47e36b3710f41973a32daa2a8f4bd27 Mon Sep 17 00:00:00 2001 From: Andrea Dell'Acqua <andrea.dellacqua@cern.ch> Date: Tue, 8 Feb 2022 10:40:04 +0100 Subject: [PATCH] adding the possibility of calculating expressions in AddPlane::process() --- .../GeoModelXml/GeoModelXml/shape/AddPlane.h | 3 +++ .../GeoModelXML/GeoModelXml/src/AddPlane.cxx | 12 +++++++++--- .../GeoModelXML/GeoModelXml/src/MakePcon.cxx | 1 + .../GeoModelXML/GeoModelXml/src/MakePgon.cxx | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/GeoModelXml/shape/AddPlane.h b/GeoModelTools/GeoModelXML/GeoModelXml/GeoModelXml/shape/AddPlane.h index 7bac7dfa8..5bdf2cf62 100644 --- a/GeoModelTools/GeoModelXML/GeoModelXml/GeoModelXml/shape/AddPlane.h +++ b/GeoModelTools/GeoModelXML/GeoModelXml/GeoModelXml/shape/AddPlane.h @@ -10,11 +10,14 @@ XERCES_CPP_NAMESPACE_BEGIN class DOMElement; XERCES_CPP_NAMESPACE_END +class GmxUtil; + class AddPlane { public: AddPlane() {}; ~AddPlane() {}; void process(const xercesc::DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane); + GmxUtil* gmxUtil=nullptr; }; diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/src/AddPlane.cxx b/GeoModelTools/GeoModelXML/GeoModelXml/src/AddPlane.cxx index 77eb53507..4ae47791d 100644 --- a/GeoModelTools/GeoModelXML/GeoModelXml/src/AddPlane.cxx +++ b/GeoModelTools/GeoModelXML/GeoModelXml/src/AddPlane.cxx @@ -3,6 +3,7 @@ */ #include "GeoModelXml/shape/AddPlane.h" +#include "GeoModelXml/GmxUtil.h" #include <string> #include <sstream> @@ -13,12 +14,17 @@ using namespace xercesc; void AddPlane::process(const xercesc::DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane) { + if (!gmxUtil) + { + std::cout<<"This is AddPlane::process()!! gmxUtil is 0!!!!!"<<std::endl; + return; + } XMLCh * zplane_tmp = XMLString::transcode("zplane"); - std::istringstream(XMLString::transcode(element->getAttribute(zplane_tmp))) >> zPlane; + zPlane=gmxUtil->evaluate(XMLString::transcode(element->getAttribute(zplane_tmp))); XMLCh * rminplane_tmp = XMLString::transcode("rminplane"); - std::istringstream(XMLString::transcode(element->getAttribute(rminplane_tmp))) >> rMinPlane; + rMinPlane=gmxUtil->evaluate(XMLString::transcode(element->getAttribute(rminplane_tmp))); XMLCh * rmaxplane_tmp = XMLString::transcode("rmaxplane"); - std::istringstream(XMLString::transcode(element->getAttribute(rmaxplane_tmp))) >> rMaxPlane; + rMaxPlane=gmxUtil->evaluate(XMLString::transcode(element->getAttribute(rmaxplane_tmp))); XMLString::release(&zplane_tmp); XMLString::release(&rminplane_tmp); XMLString::release(&rmaxplane_tmp); diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePcon.cxx b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePcon.cxx index 4b98472a3..20e7b8851 100644 --- a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePcon.cxx +++ b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePcon.cxx @@ -31,6 +31,7 @@ char *toRelease; // // Add planes // + if (!gmxUtil.tagHandler.addplane.gmxUtil) gmxUtil.tagHandler.addplane.gmxUtil=&gmxUtil; double zPlane = 0.; double rMinPlane = 0.; double rMaxPlane = 0.; diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePgon.cxx b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePgon.cxx index a73b002c7..59afebcf1 100644 --- a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePgon.cxx +++ b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakePgon.cxx @@ -31,6 +31,7 @@ char *toRelease; // // Add planes // + if (!gmxUtil.tagHandler.addplane.gmxUtil) gmxUtil.tagHandler.addplane.gmxUtil=&gmxUtil; double zPlane = 0.; double rMinPlane = 0.; double rMaxPlane = 0.; -- GitLab