diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/CMakeLists.txt b/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/CMakeLists.txt
deleted file mode 100644
index 3d40c7ba8975d9de8a328f204b0c3abf744f2833..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-################################################################################
-# Package: GeoModelDBManager
-################################################################################
-
-# Declare the package name:
-atlas_subdir( GeoModelDBManager )
-
-# comment if you want to get debug messages in Release
-if(CMAKE_BUILD_TYPE MATCHES Release)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT)
-endif(CMAKE_BUILD_TYPE MATCHES Release)
-if(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT)
-endif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-if(CMAKE_BUILD_TYPE MATCHES Debug)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment if you need debug messages in Debug build
-endif(CMAKE_BUILD_TYPE MATCHES Debug)
-
-
-# External dependencies:
-find_package( Qt5 COMPONENTS Core Sql )
-
-# Component(s) in the package:
-atlas_add_library( GeoModelDBManager
-                   src/*.cpp
-                   GeoModelDBManager/*.h
-                   PUBLIC_HEADERS GeoModelDBManager
-                   LINK_LIBRARIES Qt5::Sql )
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/GeoModelDBManager/GMDBManager.h b/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/GeoModelDBManager/GMDBManager.h
deleted file mode 100644
index 1e857144c7e59cd8b1ddec6bb364e91ce5384876..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/GeoModelDBManager/GMDBManager.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-// author: Riccardo.Maria.Bianchi@cern.ch
-// major updates: Aug 2018
-
-#ifndef GMDBManager_H
-#define GMDBManager_H
-
-
-// include Qt
-#include <QSqlDatabase>
-#include <QStringList>
-#include <QVariant>
-#include <QString>
-#include <QMap>
-
-// include C++
-#include <iostream>
-
-/**
- * \class GMDBManager
- *
- * \brief SQL Database Manager class for GeoModel
- *
- * GMDBManager sets up the connection with SQL database
- * and performs some basics queries.
- */
-class GMDBManager
-{
-public:
-	/**
-	 * @brief Constructor
-	 *
-	 * Constructor sets up connection with db and opens it
-	 * @param path - absolute path to db file
-	 */
-	GMDBManager(const QString& path);
-
-	/**
-	 * @brief Destructor
-	 *
-	 * Close the db connection
-	 */
-	~GMDBManager();
-
-
-	bool isOpen() const;
-
-	/**
-	 * @brief Print names of all GeoPhysVol objects in db
-	 */
-	void printAllPhysVols() const;
-
-	/**
-	 * @brief Print names of all GeoFullPhysVol objects in db
-	 */
-	void printAllFullPhysVols() const;
-
-	/**
-	 * @brief Print names of all GeoLogVol objects in db
-	 */
-	void printAllLogVols() const;
-
-	/**
-	 * @brief Print names of all GeoMaterial objects in db
-	 */
-	void printAllMaterials() const;
-
-	/**
-	 * @brief Print names of all GeoElement objects in db
-	 */
-	void printAllElements() const;
-
-	/**
-	 * @brief Print names of all PhysVol objects in db
-	 */
-	void printAllShapes() const;
-
-	/**
-	 * @brief Print names of all GeoSerialDenominator objects in db
-	 */
-	void printAllSerialDenominators() const;
-
-
-	void printAllSerialTransformers() const;
-	void printAllFunctions() const;
-	void printAllTransforms() const;
-	void printAllAlignableTransforms() const;
-	void printAllNameTags() const;
-
-	/**
-	 * @brief Print the db table storing all the children positions per parent
-	 */
-	void printAllChildrenPositions() const;
-
-	/**
-	 * @brief Print the db table storing all the children positions per parent
-	 */
-	void printAllNodeTypes() const;
-
-	/**
-	 * @brief Print the DB table storing the ID of the PhysVol that is the Root volume
-	 */
-	void printRootVolumeId() const;
-
-	void printDBVersion() const;
-
-	// ADD methods
-	QVariant addShape(const QString &type, const QString &parameters);
-	QVariant addMaterial(const QString &name, const QString &density, const QString &elements);
-	QVariant addElement(const QString &name, const QString &symbol, const QString &elZ, const QString &elA);
-	QVariant addLogVol(const QString &name, const QVariant &shapeId, const QVariant &materialId);
-	QVariant addPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume = false);
-	QVariant addFullPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume = false);
-	QVariant addSerialDenominator(const QString &baseName);
-	QVariant addFunction(const QString expression);
-	QVariant addSerialTransformer(const QVariant &funcId, const QVariant &physvolId, const QString volType, const unsigned int &copies);
-	QVariant addTransform(QVector<double> parameters);
-	QVariant addAlignableTransform(QVector<double> parameters);
-	QVariant addNameTag(const QString &name);
-
-
-	bool addListOfRecords(const QString geoType, const std::vector<QStringList> records);
-	bool addListOfRecordsToTable(const QString tableName, const std::vector<QStringList> records);
-	bool addListOfRecordsToTableOld(const QString tableName, const std::vector<QStringList> records);
-	bool addListOfChildrenPositions(const std::vector<QStringList> records);
-
-	bool addRootVolume(const QStringList);
-	void addChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int parentCopyNumber, const unsigned int childPos, const QString childType, const unsigned int childCopyN);
-
-	void addDBversion(const QString);
-
-	// GET methods
-
-    QString getDBFilePath();
-
-	QStringList getRootPhysVol();
-
-	QStringList getItem(QString geoType, unsigned int id);
-	QStringList getItem(unsigned int tableId, unsigned int id);
-	QStringList getItemFromTableName(QString tableName, unsigned int id);
-	QStringList getItemAndType(unsigned int tableId, unsigned int id);
-
-	QString getNodeTypeFromTableId(unsigned int id);
-
-	QMap<unsigned int, QStringList> getVPhysVolChildren(const unsigned int id, const QString nodeType, const unsigned int copyN);
-
-	/// methods to dump the DB
-	QHash<QString, QMap<unsigned int, QStringList>> getChildrenTable();
-	QHash<unsigned int, QStringList> getTableFromNodeType(QString nodeType);
-	QHash<unsigned int, QString> getAll_TableIDsNodeTypes();
-	QHash<QString, unsigned int> getAll_NodeTypesTableIDs();
-
-
-private:
-
-	bool initDB();
-	bool createTables();
-
-	void loadTestData(); // for debug only
-
-	void loadTableNamesFromDB();
-	QStringList getTableColNamesFromDB(QString tableName) const;
-
-	QString getTableNameFromTableId(unsigned int tabId);
-	QVariant getTableIdFromNodeType(QString nodeType);
-	void storeNodeType(QString nodeType, QString tableName);
-	QString getTableNameFromNodeType(QString nodeType);
-
-	QSqlQuery selectAllFromTable(QString tableName) const;
-
-
-	void storeTableColumnNames(QStringList input);
-	QStringList getTableColumnNames(QString tableName);
-	void printTableColNamesFromDB(QString tableName) const;
-
-	void printAllRecords(QString tableName) const;
-
-	int getTableColIndex(QString tableName, QString colName);
-
-	bool storeRootVolume(QVariant id, QString nodeType);
-
-	void showError(const QSqlError &err) const;
-
-    QString m_dbpath;
-	QSqlDatabase m_db;
-	bool m_dbIsOK;
-
-	bool m_deepDebug;
-
-	QMap<QString, QStringList> m_tableNames;
-	QMap<QString, QString> m_childType_tableName;
-};
-
-#endif // GMDBManager_H
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/src/GMDBManager.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/src/GMDBManager.cpp
deleted file mode 100644
index 991e821ad18953c9c51455324dc6384fb4345ab5..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelDBManager/src/GMDBManager.cpp
+++ /dev/null
@@ -1,1561 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// author: Riccardo.Maria.Bianchi@cern.ch
-// major updates: 
-// - Aug 2018 - Riccardo Maria BIANCHI
-// - Sep 2019 - Riccardo Maria BIANCHI
-
-#include <GeoModelDBManager/GMDBManager.h>
-
-#include <QSqlQuery>
-#include <QSqlError>
-#include <QSqlRecord>
-#include <QSqlDriver>
-#include <QDebug>
-
-
-static std::string dbversion = "0.3.0"; // added GeoElement support (Sep 2019)
-
-
-GMDBManager::GMDBManager(const QString &path) : m_dbpath(path), m_dbIsOK(false),  m_deepDebug(false)
-{
-	qDebug() << "GMDBManager: constructor";
-
-	#ifdef GEOREAD_DEEP_DEBUG
-	  m_deepDebug = true;
- 	#endif
-
-
-	m_dbIsOK = true;
-
-	m_db = QSqlDatabase::addDatabase("QSQLITE");
-	m_db.setDatabaseName(path);
-
-	if (!m_db.open())
-	{
-		qDebug() << "Error: connection with database failed!";
-		showError( m_db.lastError() );
-		m_dbIsOK = false;
-	}
-	else
-	{
-		qDebug() << "Database: connection ok";
-		m_dbIsOK = true;
-	}
-
-
-	// check if DB has tables, if not create them
-	if (m_dbIsOK) {
-		if ( ! (initDB()) ) {
-			std::cout << "Error: database initialization failed" << std::endl;
-			m_dbIsOK = false;
-		}
-	}
-
-	// populate DB with fake data, only for debug
-	//loadTestData();
-}
-
-GMDBManager::~GMDBManager()
-{
-	qDebug() << "GMDBManager: destructor";
-	if (m_db.isOpen())
-	{
-		m_db.close();
-	}
-}
-
-bool GMDBManager::isOpen() const
-{
-	if (! m_dbIsOK )
-		return false;
-	return m_db.isOpen();
-}
-
-
-void GMDBManager::printAllMaterials() const
-{
-	qDebug() << "printAllMaterials()";
-	printAllRecords("Materials");
-}
-void GMDBManager::printAllElements() const
-{
-	qDebug() << "printAllElements()";
-	printAllRecords("Elements");
-}
-void GMDBManager::printAllShapes() const
-{
-	qDebug() << "printAllShapes()";
-	printAllRecords("Shapes");
-}
-
-void GMDBManager::printAllSerialDenominators() const
-{
-	qDebug() << "printAllShapes()";
-	printAllRecords("SerialDenominators");
-}
-
-void GMDBManager::printAllLogVols() const
-{
-	qDebug() << "printAllLogVols()";
-	printAllRecords("LogVols");
-}
-void GMDBManager::printAllPhysVols() const
-{
-	qDebug() << "printAllPhysVols()";
-	printAllRecords("PhysVols");
-}
-void GMDBManager::printAllFullPhysVols() const
-{
-	qDebug() << "printAllFullPhysVols()";
-	printAllRecords("FullPhysVols");
-}
-void GMDBManager::printAllSerialTransformers() const
-{
-	qDebug() << "printAllSerialTransformers()";
-	printAllRecords("SerialTransformers");
-}
-void GMDBManager::printAllFunctions() const
-{
-	qDebug() << "printAllFunctions()";
-	printAllRecords("Functions");
-}
-void GMDBManager::printAllTransforms() const
-{
-	qDebug() << "printAllTransforms()";
-	printAllRecords("Transforms");
-}
-void GMDBManager::printAllAlignableTransforms() const
-{
-	qDebug() << "printAllAlignableTransforms()";
-	printAllRecords("AlignableTransforms");
-}
-void GMDBManager::printAllNameTags() const
-{
-	qDebug() << "printAllNameTags()";
-	printAllRecords("NameTags");
-}
-void GMDBManager::printAllChildrenPositions() const
-{
-	qDebug() << "printAllChildrenPositions()";
-	printAllRecords("ChildrenPositions");
-}
-void GMDBManager::printAllNodeTypes() const
-{
-	qDebug() << "printAllNodeTypes()";
-	printAllRecords("GeoNodesTypes");
-}
-void GMDBManager::printRootVolumeId() const
-{
-	qDebug() << "printRootVolumeId()";
-	printAllRecords("RootVolume");
-}
-void GMDBManager::printDBVersion() const
-{
-	qDebug() << "printDBVersion()";
-	printAllRecords("dbversion");
-}
-
-
-
-
-void GMDBManager::printAllRecords(QString tableName) const
-{
-	std::cout << tableName.toStdString() << " in db:" << std::endl;
-
-	// QSqlQuery query("SELECT * FROM " + tableName);
-	QSqlQuery query = selectAllFromTable(tableName);
-
-	int nCols = (m_tableNames[tableName]).size();
-
-	// print table column names
-	std::cout << "- " << m_tableNames[tableName].join(", ").toStdString() << std::endl;
-	while (query.next())
-	{
-		std::cout << "* "; // TODO: move to a osstream: it's cleaner
-		for( int ii=0; ii<nCols; ++ii)
-		{
-			if (! (ii==0) )
-				std::cout << ", ";
-			std::string valueStr = query.value(ii).toString().toStdString();
-			// if (valueStr == "")
-			// 	std::cout << "NULL"; // removed because we want to save the NULL to the DB, for consistency
-			// else
-				std::cout << valueStr;
-		}
-		std::cout << std::endl;
-	}
-
-	// TODO: I want to have a symbol like '---' to mean empty line when query gives 0 results.
-	// but I guess query.size() is not the right method...
-	//	qDebug() << "query size: " << query.size();
-	//	if (query.size() == 0 || query.size() == -1)
-	//		std::cout << "---" << std::endl;
-
-}
-QHash<unsigned int, QStringList> GMDBManager::getTableFromNodeType(QString nodeType)
-{
-
-	QString tableName = getTableNameFromNodeType(nodeType);
-
-	QHash<unsigned int, QStringList> records;
-	QStringList nodeParams;
-
-	int nCols = (m_tableNames[tableName]).size();
-
-	QSqlQuery query = selectAllFromTable(tableName);
-	while (query.next()) {
-		nodeParams.clear();
-		unsigned int nodeId = query.value(0).toUInt();
-
-		for( int ii=0; ii<nCols; ++ii) {
-			nodeParams << query.value(ii).toString();
-		}
-		records[nodeId] = nodeParams;
-	}
-return records;
-}
-
-
-void GMDBManager::showError(const QSqlError &err) const
-{
-	qWarning() << "Unable to initialize Database" << "Error initializing database: " + err.text();
-}
-
-QVariant GMDBManager::addPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addPhysVol() - is root?" << isRootVolume;
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into PhysVols(logvol, parent) values(?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(logVolId);
-	q.addBindValue(parentPhysVolId);
-	q.exec();
-
-	QVariant lastInserted = q.lastInsertId();
-
-	if (isRootVolume) {
-		storeRootVolume(lastInserted, "GeoPhysVol");
-	}
-
-	return lastInserted;
-
-}
-
-QVariant GMDBManager::addFullPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addFullPhysVol() - is root?" << isRootVolume;
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into FullPhysVols(logvol, parent) values(?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(logVolId);
-	q.addBindValue(parentPhysVolId);
-	q.exec();
-
-	QVariant lastInserted = q.lastInsertId();
-
-	if (isRootVolume) {
-		storeRootVolume(lastInserted, "GeoFullPhysVol");
-	}
-
-	return lastInserted;
-
-}
-
-
-
-QVariant GMDBManager::addLogVol(const QString &name, const QVariant &shapeId, const QVariant &materialId)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addLogVol()";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into LogVols(name, shape, material) values(?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(name);
-	q.addBindValue(shapeId);
-	q.addBindValue(materialId);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addMaterial(const QString &name, const QString &density, const QString &elements)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addMaterial()";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into Materials(name, density, elements) values(?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(name);
-	q.addBindValue(density);
-	q.addBindValue(elements);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addElement(const QString &name, const QString &symbol, const QString &elZ, const QString &elA)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addElement()";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into Elements(name, symbol, Z, A) values(?, ?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(name);
-	q.addBindValue(symbol);
-	q.addBindValue(elZ);
-	q.addBindValue(elA);
-	q.exec();
-	return q.lastInsertId();
-}
-
-bool GMDBManager::addListOfChildrenPositions(const std::vector<QStringList> records)
-{
-    // NOTE: Choose the right function for your version of SQLite!!
-	return addListOfRecordsToTable("ChildrenPositions", records); // newest SQLite versions
-	//return addListOfRecordsToTableOld("ChildrenPositions", records); // old SQLite versions
-}
-
-bool GMDBManager::addListOfRecords(const QString geoType, const std::vector<QStringList> records)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addListOfRecords():" << geoType;
-
-    QString tableName = m_childType_tableName[geoType];
-
-	if (tableName.isEmpty()) {
-        //qWarning() << "m_childType_tableName:" << m_childType_tableName;
-		qWarning() << "ERROR!! could not retrieve tableName for node type " << geoType << "!! Aborting...";
-		exit(1);
-	}
-
-	if (records.size() > 0 ) {
-        // NOTE: Choose the right function!!
-		return addListOfRecordsToTable(tableName, records); // newest SQLite versions
-		//return addListOfRecordsToTableOld(tableName, records); // old SQLite versions
-	}
-	else
-		qWarning() << "Info: no records to save for geoType '" << geoType << "'. Skipping...";
-	return true;
-}
-
-// ***Note***
-// the syntax built here below is more convenient
-// but it is supported only in SQLite >= 3.7.11
-// ...but SLC6 only has 3.7.9!
-// here we build a query like this:
-// queryStr = QString("INSERT INTO Materials (id, name) VALUES  (1,'Air'), (2,'Silicon'), (368,'ShieldSteel');");
-//
-bool GMDBManager::addListOfRecordsToTable(const QString tableName, const std::vector<QStringList> records)
-{
-	// get table columns and format them for query
-	QString tableColString = "(" + m_tableNames[tableName].join(", ") + ")";
-
-    unsigned int nRecords = records.size();
-    qInfo() << "number of " << tableName << "records to insert into the DB:" << nRecords;
-
-	// preparing the SQL query
-	QString queryStr("INSERT INTO %1 %2 VALUES ");
-	queryStr = queryStr.arg(tableName); // insert table name
-	queryStr = queryStr.arg(tableColString); // insert table columns
-
-	unsigned int nMat = nRecords;
-	unsigned int id = 0;
-	foreach(QStringList rec, records) {
-        //qDebug() << "rec:" << rec;
-
-		++id;
-		QStringList items;
-
-		foreach (QString item, rec) {
-			items << '"' + item + '"';
-		}
-		QString values = items.join(",");
-		queryStr += " (" + QString::number(id) + "," + values + ")";
-		if (id != nMat)
-			queryStr += ",";
-		else
-			queryStr += ";";
-
-        }
-    qDebug() << "queryStr:" << queryStr;
-
-	// executing the SQL query
-	QSqlQuery q;
-	if (!q.exec(queryStr)) {
-        qWarning() << "ERROR!!! SQL error:";
-		showError(q.lastError());
-		return false;
-	}
-
-	qDebug() << "DONE. The list of records have been inserted into the DB.";
-	return true;
-}
-
-
-
-// ***Note***
-// old syntax, for SQLite in SLC6
-// here below we build the syntax for multiple INSERT
-// compatible with old SQLite versions
-// see: stackoverflow.com/questions/1609637
-//
-// we want to build a query like this:
-//  queryStr = QString("INSERT INTO Materials (id, name) SELECT 1 as id, 'Air' as name UNION ALL SELECT 2,'Silicon' UNION ALL SELECT 368,'ShieldSteel' ")
-//
-bool GMDBManager::addListOfRecordsToTableOld(const QString tableName, const std::vector<QStringList> records)
-{
-	// get table columns and format them for query
-	QString tableColString = "(" + m_tableNames[tableName].join(", ") + ")";
-
-
-
-    QStringList colNames = m_tableNames[tableName];
-    unsigned int nRecords = records.size();
-    qInfo() << "number of " << tableName << "records to insert into the DB:" << nRecords;
-
-    /*
-     * SQLite has a limit on 'union' items, set at 500. So we have to split the items if we have more.
-     * See: stackoverflow.com/questions/9527851/
-     */
-    unsigned int bunchSize = 500;
-    if ( nRecords > bunchSize ) {
-        qWarning() << "WARNING! " << nRecords << " records of type " << tableName << "to store in the DB in one call! Call limit is " << bunchSize << " --> We split them in bunches...";
-
-        std::vector<QStringList> recordsCopy( records ); // TODO: maybe we should use a deque or queue, which have fast pop of first element?
-
-        std::vector<QStringList>::const_iterator first;
-        std::vector<QStringList>::const_iterator last;
-
-        unsigned int start = 0;
-
-        while ( recordsCopy.size() > 0 ) {
-
-        // preparing the SQL query
-        QString queryStr("INSERT INTO %1 %2 SELECT ");
-	    queryStr = queryStr.arg(tableName); // insert table name
-	    queryStr = queryStr.arg(tableColString); // insert table columns
-
-        first = recordsCopy.begin();
-        last  = recordsCopy.size() > bunchSize ? recordsCopy.begin() + bunchSize : recordsCopy.end();
-
-        std::vector<QStringList> recordsBunch( first, last ); // we take the first 500 records
-        recordsCopy.erase( first, last ); // we delete the first 500 records
-        if (m_deepDebug) qDebug() << "start:" << start << "recordsBunch size:" << recordsBunch.size() << "- recordsCopy size after removal:" << recordsCopy.size();
-
-	    // --- first record
-        // outcome should be like: " 1 as id, 'Air' as name "
-        unsigned int id = start+1; // set the first ID as 'start'
-        QStringList recFirst = recordsBunch.front(); // access first record from vector
-        recordsBunch.erase( recordsBunch.begin() ); // delete first record
-        if (m_deepDebug) qDebug() << "after taking first record - recordsBunch size:" << recordsBunch.size();
-
-        // first item in the first record (it is the ID)
-        QString firstCol = colNames[0];
-        queryStr += QString::number(id) + " as " + firstCol + ", ";
-
-        // the other items in the first record
-        unsigned int ii = 1;
-        unsigned int nRecs = recFirst.size();
-        foreach (QString rec, recFirst) {
-            queryStr += "'" + rec + "'" + " as " + colNames[ii];
-            if (ii != nRecs)
-                queryStr += ","; // add coma, but not on latest
-            queryStr += " "; // add space
-            //qDebug() << "first element:" << ii << nRecs << queryStr;
-            ++ii;
-        }
-        if (m_deepDebug) qDebug() << "first element query:" << queryStr;
-        // --- other records
-        // outcome should be: " UNION ALL SELECT 2,'Silicon' "
-
-
-            foreach(QStringList recs, recordsBunch) {
-
-							// DEBUG
-							if (tableName == "Functions") {
-								if (recs[1].length() > 65000) {
-									std::cout << "LONG STRING! size: " << recs[1].length() << std::endl;
-									std::cout << "LONG STRING! string: " << recs[1].toStdString() << std::endl << std::endl;
-								}
-							}
-							//------
-
-								++id;
-                // put single quotes around items
-                QStringList items;
-                foreach (QString item, recs) {
-			        		items << "'" + item + "'";
-		        		}
-                // join items into a string and add the SQL commands
-                QString itemsStr = items.join(", ");
-                queryStr += " UNION ALL SELECT " + QString::number(id) + ", " + itemsStr;
-            }
-
-        //qDebug() << "queryStr:" << queryStr;
-
-	    // executing the SQL query
-	    QSqlQuery q;
-	    if (!q.exec(queryStr)) {
-            qWarning() << "ERROR!!! SQL error:";
-		    showError(q.lastError());
-		    return false;
-	    }
-        qDebug() << bunchSize << "elements have been saved into the DB, starting at:" << start;
-
-        start += bunchSize; // for the next iteration
-
-      } // end of while
-
-    } // end of if(>500)
-    else {
-    // preparing the SQL query
-    QString queryStr("INSERT INTO %1 %2 SELECT ");
-	queryStr = queryStr.arg(tableName); // insert table name
-	queryStr = queryStr.arg(tableColString); // insert table columns
-
-    unsigned int id = 0;
-    // loop on all records
-	foreach(QStringList recs, records) {
-
-		++id;
-
-        // first record
-        // outcome should be like: " 1 as id, 'Air' as name "
-        if (id == 1) {
-
-            // first item if the record (it is the ID)
-            QString firstCol = colNames.takeFirst();
-            queryStr += QString::number(id) + " as " + firstCol + ", ";
-
-            // the other items in the record
-            unsigned int ii = 0;
-            unsigned int nRecs = recs.size();
-            foreach (QString rec, recs) {
-                queryStr += "'" + rec + "'" + " as " + colNames[ii];
-                if (ii != nRecs-1)
-                    queryStr += ","; // add coma, but not on latest
-                queryStr += " "; // add space
-                //qDebug() << ii << nRecs << queryStr;
-                ++ii;
-            }
-
-         }
-        // other records
-        // outcome should be: " UNION ALL SELECT 2,'Silicon' "
-        else {
-
-            // put single quotes around items
-            QStringList items;
-            foreach (QString item, recs) {
-			    items << "'" + item + "'";
-		    }
-            // join items into a string and add the SQL commands
-            QString itemsStr = items.join(", ");
-            queryStr += " UNION ALL SELECT " + QString::number(id) + ", " + itemsStr;
-        }
-
-	} // end of: foreach(QStringList recs, records)
-
-    //qDebug() << "queryStr:" << queryStr;
-
-	// executing the SQL query
-	QSqlQuery q;
-	if (!q.exec(queryStr)) {
-        qWarning() << "ERROR!!! SQL error:";
-		showError(q.lastError());
-		return false;
-	}
-} // end of (else > 500)
-
-	qDebug() << "DONE. The list of " << nRecords << "records have been inserted into the DB.";
-	return true;
-
-}
-
-
-
-
-
-QVariant GMDBManager::addShape(const QString &type, const QString &parameters)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addShape()";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into Shapes(type, parameters) values(?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(type);
-	q.addBindValue(parameters);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addSerialDenominator(const QString &baseName)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addSerialDenominator("+baseName+")";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into SerialDenominators(baseName) values(?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(baseName);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addNameTag(const QString &name)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addNameTag("+name+")";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into NameTags(name) values(?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-	q.addBindValue(name);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addFunction(const QString expression)
-{
-	if (m_deepDebug) {
-        qDebug() << "GMDBManager::addFunction()";
-	    std::cout << "Function - expression string len: " << expression.length();
-	    std::cout << "Function - expression: " << expression.toStdString() << std::endl << std::endl;
-	    qDebug() << "expression:" << expression;
-    }
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into Functions(expression) values(?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(expression);
-	q.exec();
-	return q.lastInsertId();
-
-
-}
-
-QVariant GMDBManager::addSerialTransformer(const QVariant &funcId, const QVariant &physvolId, const QString physvolType, const unsigned int &copies)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addSerialTransformer()" << funcId << physvolId << copies;
-
-	QVariant volTableId = getTableIdFromNodeType(physvolType);
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into SerialTransformers(funcId, volId, volTable, copies) values(?, ?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(funcId);
-	q.addBindValue(physvolId);
-	q.addBindValue(volTableId);
-	q.addBindValue(copies);
-	q.exec();
-	return q.lastInsertId();
-}
-
-QVariant GMDBManager::addTransform(QVector<double> params)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addTransform()";
-
-	// get the 12 matrix elements
-	double xx = params[0];
-	double xy = params[1];
-	double xz = params[2];
-
-	double yx = params[3];
-	double yy = params[4];
-	double yz = params[5];
-
-	double zx = params[6];
-	double zy = params[7];
-	double zz = params[8];
-
-	double dx = params[9];
-	double dy = params[10];
-	double dz = params[11];
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into Transforms(xx, xy, xz, yx, yy, yz, zx, zy, zz, dx, dy, dz) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(xx);
-	q.addBindValue(xy);
-	q.addBindValue(xz);
-	q.addBindValue(yx);
-	q.addBindValue(yy);
-	q.addBindValue(yz);
-	q.addBindValue(zx);
-	q.addBindValue(zy);
-	q.addBindValue(zz);
-	q.addBindValue(dx);
-	q.addBindValue(dy);
-	q.addBindValue(dz);
-	q.exec();
-	return q.lastInsertId();
-}
-
-
-QVariant GMDBManager::addAlignableTransform(QVector<double> params)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addAlignableTransform()";
-
-	// get the 12 matrix elements
-	double xx = params[0];
-	double xy = params[1];
-	double xz = params[2];
-
-	double yx = params[3];
-	double yy = params[4];
-	double yz = params[5];
-
-	double zx = params[6];
-	double zy = params[7];
-	double zz = params[8];
-
-	double dx = params[9];
-	double dy = params[10];
-	double dz = params[11];
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into AlignableTransforms(xx, xy, xz, yx, yy, yz, zx, zy, zz, dx, dy, dz) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-
-	q.addBindValue(xx);
-	q.addBindValue(xy);
-	q.addBindValue(xz);
-	q.addBindValue(yx);
-	q.addBindValue(yy);
-	q.addBindValue(yz);
-	q.addBindValue(zx);
-	q.addBindValue(zy);
-	q.addBindValue(zz);
-	q.addBindValue(dx);
-	q.addBindValue(dy);
-	q.addBindValue(dz);
-	q.exec();
-	return q.lastInsertId();
-}
-
-
-bool GMDBManager::addRootVolume(const QStringList values)
-{
-	if (values.size() > 0 ) {
-		QVariant volId = QVariant(values[0]);
-		QString nodeType = values[1];
-		return storeRootVolume( volId, nodeType );
-	}
-	else
-		qFatal("Info: no records to save for RootVolume!");
-	return false;
-}
-
-// insert a single parent-child relationship for a given parent volume
-void GMDBManager::addChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int parentCopyNumber, const unsigned int childPos, const QString childType, const unsigned int childCopyN)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::addChildPosition(" << parentId << "," << parentType << "," << QString::number(parentCopyNumber) << "," <<childPos << "," << childType << ", " << childId << ", " << QString::number(childCopyN) << ")";
-
-	// get table name -- which the child ID refers to -- based on the child type
-	QVariant parentTableId = getTableIdFromNodeType(parentType);
-	QVariant childTableId = getTableIdFromNodeType(childType);
-
-	QString tableName = "ChildrenPositions";
-	QStringList cols = getTableColumnNames(tableName);
-
-	QString queryStr = QString("insert into %1(%2, %3, %4, %5, %6, %7, %8) values(?, ?, ?, ?, ?, ?, ?)").arg(tableName);
-	for (int i=0; i < cols.size(); ++i) {
-		if (i != 0) // skip the "id" column
-			queryStr = queryStr.arg( cols.at(i) );
-	}
-	if (m_deepDebug) qDebug() << "queryStr:" << queryStr;
-	QSqlQuery q;
-	if (!q.prepare(queryStr)) {
-		showError(q.lastError());
-		return;
-	}
-	qDebug() << "parent:" << parentId;
-	q.addBindValue(parentId);
-	q.addBindValue(parentTableId);
-	q.addBindValue(parentCopyNumber);
-	q.addBindValue(childPos);
-	q.addBindValue(childTableId);
-	q.addBindValue(childId);
-	q.addBindValue(childCopyN);
-	q.exec();
-	return;
-}
-
-void GMDBManager::addDBversion(const QString version)
-{
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into dbversion(version) values(?)"))) {
-		showError(q.lastError());
-		return;
-	}
-	q.addBindValue(version);
-	q.exec();
-	return;
-}
-
-
-QStringList GMDBManager::getItem(QString geoType, unsigned int id)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::getItem(geoType, id)"<< geoType << QString::number(id);
-
-	/* Get the right DB table */
-	QString tableName = getTableNameFromNodeType(geoType);
-	return getItemFromTableName(tableName, id);
-}
-
-
-QStringList GMDBManager::getItem(unsigned int tableId, unsigned int id)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::getItem(tableId, id)"<< QString::number(tableId) << QString::number(id);
-	/* Get the right DB table */
-	QString tableName = getTableNameFromTableId(tableId);
-	return getItemFromTableName(tableName, id);
-
-}
-
-QStringList GMDBManager::getItemAndType(unsigned int tableId, unsigned int id)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::getItemAndType(tableId, id)"<< QString::number(tableId) << QString::number(id);
-	/* Get the right DB table */
-	QString tableName = getTableNameFromTableId(tableId);
-
-	QString nodeType = getNodeTypeFromTableId(tableId);
-
-	QStringList results;
-	QStringList item =  getItemFromTableName(tableName, id);
-
-	results << nodeType << item;
-
-	return results;
-
-}
-
-
-QStringList GMDBManager::getItemFromTableName(QString tableName, unsigned int id)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::getItemFromTableName(tableName, id)"<< tableName << QString::number(id);
-	/*
-	 * 2. Get the object from DB
-	 */
-	// prepare a SQL string with the right table name
-	QString queryStr = QString("SELECT * FROM %1 WHERE id = (?)").arg(tableName);
-	// prepare the query
-	QSqlQuery q;
-	if (!q.prepare( queryStr )) {
-		showError(q.lastError());
-		return QStringList();
-	}
-	q.addBindValue(id);
-	q.exec();
-
-	QStringList params;
-
-	// get the number of columns of the DB table
-	int nCols = (m_tableNames[tableName]).size();
-
-	while (q.next()) {
-
-		for( int ii=0; ii<nCols; ++ii)
-			params << q.value(ii).toString();
-	}
-	if (params.length()==0) {
-		qWarning() << "WARNING!!" << "Item" << id << "does not exist in table" << tableName << "!!";
-	}
-	return params;
-}
-
-// get the list of children for a single GeoVPhysVol (i.e., GeoPhysVol or GeoFullPhysVol)
-QMap<unsigned int, QStringList> GMDBManager::getVPhysVolChildren(const unsigned int id, const QString nodeType, const unsigned int parentCopyNumber)
-{
-	if (m_deepDebug) qDebug() << "GMDBManager::getVPhysVolChildren() - id:" << QString::number(id) << "- type:" << nodeType << "- copyN:" << QString::number(parentCopyNumber);
-
-	QVariant tableId = getTableIdFromNodeType(nodeType);
-
-	// get children and their positions
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("SELECT * FROM ChildrenPositions WHERE parentId = (?) AND parentTable = (?) AND parentCopyNumber = (?)"))) {
-		showError(q.lastError());
-		return QMap<unsigned int, QStringList>();
-	}
-	q.addBindValue(id);
-	q.addBindValue(tableId);
-	q.addBindValue(parentCopyNumber);
-	q.exec();
-
-	QMap<unsigned int, QStringList> children;
-	QStringList childParams;
-
-	// get the number of columns of the DB table
-	int nCols = m_tableNames["ChildrenPositions"].size();
-
-	while (q.next()) {
-
-		childParams.clear();
-
-		unsigned int childPos = q.value(3).toUInt();
-
-		for( int ii=0; ii<nCols; ++ii)
-			childParams << q.value(ii).toString();
-
-		children[childPos] = childParams;
-	}
-
-	return children;
-}
-
-
-// Get all parent-children data from the database in one go
-QHash<QString, QMap<unsigned int, QStringList>> GMDBManager::getChildrenTable()
-{
-	qDebug() << "GMDBManager::getChildrenTable()";
-
-	QSqlQuery q = selectAllFromTable("ChildrenPositions");
-
-	QHash< QString, QMap<unsigned int, QStringList> > all_children; // to store all children
-	// QMap<unsigned int, QStringList> children; // to temporarily store the children of one parent
-	QStringList childParams; // to temporarily store the children parameters
-
-	// get the number of columns of the DB table
-	int nCols = m_tableNames["ChildrenPositions"].size();
-        qDebug() << "num of columns in childrenPos table" << nCols;
-
-    // loop over all children's positions stored in the DB
-	while (q.next()) {
-
-		childParams.clear();
-
-		QString parentId = q.value(1).toString();
-		QString parentTable = q.value(2).toString();
-		QString parentCopyNumber = q.value(3).toString();
-		unsigned int childPos = q.value(4).toUInt();
-
-		QString key = parentId + ":" + parentTable + ":" + parentCopyNumber;
-
-		for( int ii=0; ii<nCols; ++ii)
-			childParams << q.value(ii).toString();
-
-		all_children[key][childPos] = childParams;
-	}
-	return all_children;
-}
-
-
-
-QVariant GMDBManager::getTableIdFromNodeType(QString nodeType)
-{
-	qDebug() << "GMDBManager::getTableIdFromNodeType("<< nodeType <<")";
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("SELECT id FROM GeoNodesTypes WHERE nodeType = (?)"))) {
-		showError(q.lastError());
-		return QVariant();
-	}
-	q.addBindValue(nodeType);
-	q.exec();
-
-	QVariant id;
-	while (q.next()) {
-		id = q.value(0);
-		qDebug() << "id:" << id;
-	}
-
-	return id;
-}
-
-QString GMDBManager::getTableNameFromNodeType(QString nodeType)
-{
-	qDebug() << "GMDBManager::getTableNameFromNodeType("<< nodeType <<")";
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("SELECT tableName FROM GeoNodesTypes WHERE nodeType = (?)"))) {
-		showError(q.lastError());
-		return QString();
-	}
-	q.addBindValue(nodeType);
-	q.exec();
-
-	QString tableName;
-	while (q.next()) {
-		tableName = q.value(0).toString();
-		qDebug() << "tableName:" << tableName;
-	}
-
-	return tableName;
-}
-
-// TODO: this and other methods could take data from in-memory maps, without asking to the DB all the times
-QString GMDBManager::getTableNameFromTableId(unsigned int tabId)
-{
-	qDebug() << "GMDBManager::getTableNameFromTableId()";
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("SELECT tableName FROM GeoNodesTypes WHERE id = (?)"))) {
-		showError(q.lastError());
-		return QString();
-	}
-	q.addBindValue(tabId);
-	q.exec();
-
-	QString tableName;
-	while (q.next()) {
-		tableName = q.value(0).toString();
-		qDebug() << "tableName:" << tableName;
-	}
-
-	return tableName;
-}
-
-QString GMDBManager::getNodeTypeFromTableId(unsigned int tabId)
-{
-	qDebug() << "GMDBManager::getNodeTypeFromTableId()";
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("SELECT nodeType FROM GeoNodesTypes WHERE id = (?)"))) {
-		showError(q.lastError());
-		return QString();
-	}
-	q.addBindValue(tabId);
-	q.exec();
-
-	QString nodeType;
-	while (q.next()) {
-		nodeType = q.value(0).toString();
-		qDebug() << "tableName:" << nodeType;
-	}
-
-	return nodeType;
-}
-
-
-QHash<unsigned int, QString> GMDBManager::getAll_TableIDsNodeTypes()
-{
-	qDebug() << "GMDBManager::getAll_TableIDsNodeTypes()";
-
-	QHash<unsigned int, QString> output;
-
-	QSqlQuery q = selectAllFromTable("GeoNodesTypes");
-
-	unsigned int id;
-	QString nodeType;
-	// QString tableName;
-	while (q.next()) {
-		id = q.value(0).toUInt();
-		nodeType = q.value(1).toString();
-		output[id] = nodeType;
-	}
-	return output;
-}
-
-
-QHash<QString, unsigned int> GMDBManager::getAll_NodeTypesTableIDs()
-{
-	qDebug() << "GMDBManager::getAll_NodeTypesTableIDs()";
-
-	QHash<QString, unsigned int> output;
-
-	QSqlQuery q = selectAllFromTable("GeoNodesTypes");
-
-	unsigned int id;
-	QString nodeType;
-	// QString tableName;
-	while (q.next()) {
-		id = q.value(0).toUInt();
-		nodeType = q.value(1).toString();
-		output[nodeType] = id;
-	}
-	return output;
-}
-
-
-QSqlQuery GMDBManager::selectAllFromTable(QString tableName) const
-{
-	QSqlQuery q;
-
-	QString queryStr = QString("SELECT * FROM %1");
-	queryStr = queryStr.arg(tableName);
-
-	if (!q.prepare(queryStr)) {
-		showError(q.lastError());
-		return QSqlQuery();
-	}
-	q.exec();
-	return q;
-}
-
-
-bool GMDBManager::initDB()
-{
-	qDebug() << "GMDBManager::initDB()";
-
-
-	// check if DB is empty
-	qDebug() << "checking existing tables...";
-	QSqlDatabase db = QSqlDatabase::database();
-	QStringList tables = db.tables();
-	if (tables.contains("LogVols", Qt::CaseInsensitive)
-			&& tables.contains("PhysVols", Qt::CaseInsensitive)
-			&& tables.contains("Materials", Qt::CaseInsensitive)
-			&& tables.contains("Elements", Qt::CaseInsensitive)
-			&& tables.contains("Shapes", Qt::CaseInsensitive)
-	) {
-		qDebug() << "tables are present already. Skipping tables creation. Loading tables...";
-		loadTableNamesFromDB();
-		return true;
-	}
-
-	// if DB is empty, then create tables
-	qDebug() << "DB file is empty. Creating tables...";
-	bool tablesOK = createTables();
-
-	// store DB version
-	qDebug() << "Storing DB version:" << QString::fromStdString(dbversion);
-	addDBversion(QString::fromStdString(dbversion));
-
-	return tablesOK;
-
-}
-
-bool GMDBManager::createTables()
-{
-	qDebug() << "GMDBManager::createTables()";
-
-	QStringList tab;
-	QSqlQuery q;
-	QString geoNode;
-	QString tableName;
-	QString queryStr;
-
-	// create a table to store the relation between the types of GeoNodes and the name of the table
-	tableName = "dbversion";
-	tab << tableName << "id" << "version";
-	queryStr = QString("create table %1(%2 integer primary key, %3 integer)");
-	for (int i=0; i < tab.size(); ++i) {
-		queryStr = queryStr.arg( tab.at(i) );
-	}
-	//qDebug() << "query:" << queryStr;
-	if (!q.exec(queryStr)) {
-		showError(q.lastError());
-		return false;
-	}
-	storeTableColumnNames(tab);
-	tab.clear();
-
-	// create a table to store the relation between the types of GeoNodes and the name of the table
-	tableName = "GeoNodesTypes";
-	tab << tableName << "id" << "nodeType" << "tableName";
-	storeTableColumnNames(tab);
-	tab.clear();
-	if (!q.exec(QLatin1String("create table GeoNodesTypes(id integer primary key, nodeType varchar, tableName varchar)"))) {
-		showError(q.lastError());
-		return false;
-	}
-
-	// ChildrenPositions table
-	tableName = "ChildrenPositions";
-	tab << tableName << "id" << "parentId" << "parentTable" << "parentCopyNumber" << "position" << "childTable" << "childId" << "childCopyNumber";
-	queryStr = QString("create table %1(%2 integer primary key, %3 integer, %4 integer not null REFERENCES GeoNodesTypes(id), %5 integer, %6 integer, %7 integer not null REFERENCES GeoNodesTypes(id), %8 integer not null, %9 integer)"); // FIXME: add "NOT NULL" to copy numbers
-	for (int i=0; i < tab.size(); ++i) {
-		queryStr = queryStr.arg( tab.at(i) );
-	}
-	// qDebug() << "query:" << queryStr;
-	if (!q.exec(queryStr)) {
-		showError(q.lastError());
-		return false;
-	}
-	storeTableColumnNames(tab);
-	tab.clear();
-
-
-	// RootVolume table
-	tableName = "RootVolume";
-	tab << tableName << "id" << "volId" << "volTable";
-	queryStr = QString("create table %1(%2 integer primary key, %3 integer not null, %4 integer not null REFERENCES GeoNodesTypes(id))");
-	for (int i=0; i < tab.size(); ++i) {
-		queryStr = queryStr.arg( tab.at(i) );
-	}
-	//qDebug() << "query:" << queryStr;
-	if (!q.exec(queryStr)) {
-		showError(q.lastError());
-		return false;
-	}
-	storeTableColumnNames(tab);
-	tab.clear();
-
-
-	// PhysVols table
-	geoNode = "GeoPhysVol";
-	tableName = "PhysVols";
-	tab << tableName << "id" << "logvol" << "parent"; // FIXME: remove "parent" field, it is not used anymore
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table PhysVols(id integer primary key, logvol integer not null, parent integer)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// FullPhysVols table
-	geoNode = "GeoFullPhysVol";
-	tableName = "FullPhysVols";
-	tab << tableName << "id" << "logvol" << "parent";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table FullPhysVols(id integer primary key, logvol integer not null, parent integer)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// LogVols table
-	geoNode = "GeoLogVol";
-	tableName = "LogVols";
-	tab << tableName << "id" << "name" << "shape" << "material";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table LogVols(id integer primary key, name varchar, shape integer not null, material integer not null)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// Materials table
-	geoNode = "GeoMaterial";
-	tableName = "Materials";
-	tab << tableName << "id" << "name" << "density" << "elements";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table Materials(id integer primary key, name varchar, density varchar, elements varchar)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// Elements table
-	geoNode = "GeoElement";
-	tableName = "Elements";
-	tab << tableName << "id" << "name" << "symbol" << "Z" << "A";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table Elements(id integer primary key, name varchar, symbol varchar, Z varchar, A varchar)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// Shapes table
-	geoNode = "GeoShape";
-	tableName = "Shapes";
-	tab << tableName << "id" << "type" << "parameters";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table Shapes(id integer primary key, type varchar, parameters varchar)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// SerialDenominators table
-	geoNode = "GeoSerialDenominator";
-	tableName = "SerialDenominators";
-	tab << tableName << "id" << "baseName";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table SerialDenominators(id integer primary key, baseName varchar)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// Functions table
-	geoNode = "Function";
-	tableName = "Functions";
-	tab << tableName << "id" << "expression";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table Functions(id integer primary key, expression varchar)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// SerialDenominators table
-	geoNode = "GeoSerialTransformer";
-	tableName = "SerialTransformers";
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	tab << tableName << "id" << "funcId" << "volId" << "volTable" << "copies";
-	storeTableColumnNames(tab);
-	queryStr = QString("create table %1(%2 integer primary key, %3 integer not null REFERENCES Functions(id), %4 integer not null, %5 integer not null REFERENCES GeoNodesTypes(id), %6 integer)");
-	for (int i=0; i < tab.size(); ++i) {
-		queryStr = queryStr.arg( tab.at(i) );
-	}
-	tab.clear();
-	// qDebug() << "query:" << queryStr;
-	if (!q.exec(queryStr)) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-
-	// Transforms table
-	geoNode = "GeoTransform";
-	tableName = "Transforms";
-	tab << tableName << "id" << "xx" << "xy" << "xz" << "yx" << "yy" << "yz" << "zx" << "zy" << "zz" << "dx" << "dy" << "dz";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table Transforms(id integer primary key, xx real, xy real, xz real, yx real, yy real, yz real, zx real, zy real, zz real, dx real, dy real, dz real)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// AlignableTransforms table
-	geoNode = "GeoAlignableTransform";
-	tableName = "AlignableTransforms";
-	tab << tableName << "id" << "xx" << "xy" << "xz" << "yx" << "yy" << "yz" << "zx" << "zy" << "zz" << "dx" << "dy" << "dz";
-	storeTableColumnNames(tab);
-	tab.clear();
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	if (!q.exec(QLatin1String("create table AlignableTransforms(id integer primary key, xx real, xy real, xz real, yx real, yy real, yz real, zx real, zy real, zz real, dx real, dy real, dz real)"))) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-	// NameTags table
-	geoNode = "GeoNameTag";
-	tableName = "NameTags";
-	m_childType_tableName[geoNode] = tableName; // store type-table relation
-	tab << tableName << "id" << "name";
-	storeTableColumnNames(tab);
-	queryStr = QString("create table %1(%2 integer primary key, %3 varchar)");
-	for (int i=0; i < tab.size(); ++i) {
-		queryStr = queryStr.arg( tab.at(i) );
-	}
-	tab.clear();
-	// qDebug() << "query:" << queryStr;
-	if (!q.exec(queryStr)) {
-		showError(q.lastError());
-		return false;
-	} else {
-		storeNodeType(geoNode, tableName);
-	}
-
-    qDebug() << "m_childType_tableName:" << m_childType_tableName;
-	qDebug() << "DONE. All tables created successfully.";
-	return true;
-
-}
-
-void GMDBManager::loadTableNamesFromDB()
-{
-	qDebug() << "GMDBManager::loadTableNames()";
-	QSqlDatabase db = QSqlDatabase::database();
-	QStringList tables = db.tables();
-	foreach (QString tab, tables) {
-		QStringList tabColNames = getTableColNamesFromDB(tab);
-		storeTableColumnNames(tabColNames);
-	}
-	// qDebug() << "m_tableNames:" << m_tableNames;
-}
-
-void GMDBManager::storeTableColumnNames(QStringList input)
-{
-	//	qDebug() << "GMDBManager::storeTableColumnNames()";
-	if (! (input.isEmpty()) ) {
-		QString tabName = input.takeFirst();
-		m_tableNames[tabName] = input;
-	}
-}
-
-QStringList GMDBManager::getTableColumnNames(QString tableName)
-{
-	//	qDebug() << "GMDBManager::getTableColumnNames()";
-	return m_tableNames[tableName];
-}
-
-void GMDBManager::storeNodeType(QString nodeType, QString tableName)
-{
-	qDebug() << "GMDBManager::storeNodeType()";
-
-	QSqlQuery q;
-	if (!q.prepare(QLatin1String("insert into GeoNodesTypes(nodeType, tableName) values(?, ?)"))) {
-		showError(q.lastError());
-		return;
-	}
-
-	q.addBindValue(nodeType);
-	q.addBindValue(tableName);
-	q.exec();
-	return;
-}
-
-void GMDBManager::loadTestData()
-{
-
-	qDebug() << "GMDBManager::loadTestData()";
-
-	// create test data
-	QSqlQuery q;
-	//
-	//	qDebug() << "Loading Shapes...";
-	//	if (!q.prepare(QLatin1String("insert into Shapes(name) values(?)"))) {
-	//		showError(q.lastError());
-	//		return;
-	//	}
-	qDebug() << "Loading Shapes...";
-	QVariant boxId    = addShape(QLatin1String("Box"), "");
-	QVariant coneId   = addShape(QLatin1String("Cone"), "");
-	QVariant sphereId = addShape(QLatin1String("Sphere"), "");
-
-	qDebug() << "Loading Elements...";
-	qWarning() << "Sample GeoElement data --> to be implemented!";
-
-	qDebug() << "Loading Materials...";
-	QVariant airId  = addMaterial(QLatin1String("Air"),QLatin1String("density"),QLatin1String("elements"));
-	QVariant ironId = addMaterial(QLatin1String("Iron"),QLatin1String("density"),QLatin1String("elements"));
-	QVariant leadId = addMaterial(QLatin1String("Lead"),QLatin1String("density"),QLatin1String("elements"));
-
-	qDebug() << "Loading LogVols...";
-	QVariant worldLogId = addLogVol(QLatin1String("WorldLog"), boxId, airId);
-	QVariant toyLogId  = addLogVol(QLatin1String("ToyLog"), coneId, leadId);
-
-	qDebug() << "Loading PhysVols...";
-	QVariant rootPhysId = addPhysVol(worldLogId, QVariant()); // no parent
-	QVariant childPhysId = addPhysVol(toyLogId, rootPhysId);
-
-	qDebug() << "DONE. Created and loaded test data.";
-}
-
-
-QStringList GMDBManager::getTableColNamesFromDB(QString tableName) const
-{
-	QStringList colNames;
-	colNames << tableName;
-
-	// fetch the driver
-	QSqlDriver* driver = m_db.driver();
-	QSqlRecord record = driver->record(tableName);
-	int colN = record.count();
-	for (int i = 0; i < colN; ++i)
-		colNames << record.fieldName(i);
-	return colNames;
-}
-
-
-
-void GMDBManager::printTableColNamesFromDB(QString tableName) const
-{
-	qDebug() << "GMDBManager::printTableColNames:" << tableName;
-
-	// fetch the driver
-	qDebug() << getTableColNamesFromDB(tableName);
-}
-
-bool GMDBManager::storeRootVolume(QVariant id, QString nodeType)
-{
-	qDebug() << "GMDBManager::storeRootVolume:" << id << nodeType;
-
-	QVariant typeId = getTableIdFromNodeType(nodeType);
-
-	QString tableName = "RootVolume";
-	QStringList cols = getTableColumnNames(tableName);
-
-	// prepare the query string
-	QString queryStr = QString("insert into %1(%2, %3) values(?, ?)").arg(tableName);
-	for (int i=0; i < cols.size(); ++i) {
-		if (i != 0) // skip the "id" column
-			queryStr = queryStr.arg( cols.at(i) );
-	}
-	//qDebug() << "queryStr:" << queryStr;
-	// prepare the query
-	QSqlQuery q;
-	if (!q.prepare(queryStr)) {
-		showError(q.lastError());
-		return false;
-	}
-	q.addBindValue(id);
-	q.addBindValue(typeId);
-	// run the query
-	q.exec();
-	return true;
-}
-
-QStringList GMDBManager::getRootPhysVol()
-{
-	qDebug() << "GMDBManager::getRootPhysVol()";
-	// get the ID of the ROOT vol from the table "RootVolume"
-	// QSqlQuery query("SELECT * FROM RootVolume");
-	QSqlQuery query = selectAllFromTable("RootVolume");
-
-	QVariant id;
-	QVariant typeId;
-	while (query.next()) {
-		id = query.value(1);
-		typeId = query.value(2);
-	}
-	return getItemAndType(typeId.toUInt(), id.toUInt());
-}
-
-QString GMDBManager::getDBFilePath()
-{
-    return m_dbpath;
-}
-
-
-int GMDBManager::getTableColIndex(QString tableName, QString colName)
-{
-	//qDebug() << "GMDBManager::getTableColIndex()";
-	QStringList colFields = m_tableNames[tableName];
-	return colFields.lastIndexOf(colName);
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/CMakeLists.txt b/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/CMakeLists.txt
deleted file mode 100644
index 5808035a7d768537d753a043be471d17490e043d..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-################################################################################
-# Package: GeoModelErrorHandler
-################################################################################
-
-# Declare the package name:
-atlas_subdir( GeoModelErrorHandler )
-
-# Install files from the package:
-atlas_install_headers( GeoModelErrorHandler )
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/GeoModelErrorHandler/ErrorHandler.h b/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/GeoModelErrorHandler/ErrorHandler.h
deleted file mode 100644
index e32da54aee8a4db52e345c491c05b70c142a6270..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoModelErrorHandler/GeoModelErrorHandler/ErrorHandler.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * ErrorHandler.h
- *
- *  Created on: May 29, 2016
- *      Author: rbianchi
- *
- *  Source:
- *  - http://brianmilco.blogspot.ch/2011/11/color-debug-output-with-qt-and-qdebug.html
- */
-
-#ifndef ERRORHANDLER_H_
-#define ERRORHANDLER_H_
-
-#include <QtGlobal>
-#include <QString>
-
-//void errorHandler(QtMsgType type, const char *msg)
-void errorHandler(QtMsgType type, const QMessageLogContext &, const QString & msg)
-
-{
-
-	const char* msgChar = msg.toStdString().c_str();
-
-    switch (type) {
-
-        case QtDebugMsg:
-
-            fprintf(stderr, "%s\n", msgChar);
-
-            break;
-
-        case QtWarningMsg:
-
-            fprintf(stderr, "\033[1;33mWarning\033[0m: %s\n", msgChar);
-
-            break;
-
-        case QtCriticalMsg:
-
-            fprintf(stderr, "\033[31mCritical\033[0m: %s\n", msgChar);
-
-            break;
-
-        case QtFatalMsg:
-
-            fprintf(stderr, "\033[31mFatal\033[0m: %s\n", msgChar);
-
-            abort();
-
-        case QtInfoMsg:
-
-            break;
-
-
-    }
-
-}
-
-
-#endif /* ERRORHANDLER_H_ */
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/CMakeLists.txt b/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/CMakeLists.txt
deleted file mode 100644
index 073d0e926cc5c8d7a4ec9a6469d063e81bcc77ed..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/CMakeLists.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-################################################################################
-# Package: GeoRead
-################################################################################
-
-# Declare the package name:
-atlas_subdir( GeoRead )
-
-# Declare the package's dependencies:
-# TODO: we can skip the dependency on GeoPrimitives when we convert all methods to Eigen (GeoTrf::Transform3D)
-atlas_depends_on_subdirs( PUBLIC
-                          DetectorDescription/GeoPrimitives
-                          )
-
-# External dependencies:
-find_package( Qt5 COMPONENTS Core ) # needed for QDebug
-find_package( CLHEP ) # to be dropped when migrated all methods to the new Eigen-based GeoTrf
-find_package( Eigen )
-find_package( GeoModelCore )
-
-
-
-if(CMAKE_BUILD_TYPE MATCHES Release)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment out if you want to get debug messages in Release
-endif(CMAKE_BUILD_TYPE MATCHES Release)
-if(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment out if you want to get debug messages in RelWithDebInfo
-endif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-
-# Component(s) in the package:
-atlas_add_library( GeoRead
-                   src/*.cpp
-                   PUBLIC_HEADERS GeoRead
-                   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${GEOMODELCORE_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${CLHEP_LIBRARIES} ${GEOMODELCORE_LIBRARIES} GeoModelDBManager TFPersistification)
-                   #LINK_LIBRARIES ${CLHEP_LIBRARIES} Qt5::Widgets GeoModelKernel GeoModelDBManager TFPersistification VP1Base )
-# TODO: we should get rid of VP1Base::VP1Msg dependency, since GeoRead should not depend on VP1 packages. Maybe we can move VP1Msg to a standalone package.
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/GeoRead/GReadIn.h b/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/GeoRead/GReadIn.h
deleted file mode 100644
index d6bbdb8fcc3543a8d87e620be3e7d183abe4b664..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/GeoRead/GReadIn.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * GeoModelReadIn.h
- *
- *  Created on: May 20, 2016
- *      Author: Riccardo Maria BIANCHI <rbianchi@cern.ch>
- */
-
-#ifndef GEOMODELREADIN_H_
-#define GEOMODELREADIN_H_
-
-#include "GeoModelDBManager/GMDBManager.h"
-
-#include "GeoModelKernel/GeoXF.h"
-
-
-// C++ includes
-#include <string>
-#include <set>
-
-
-// FWD declarations
-class GeoVPhysVol;
-class GeoPhysVol;
-class GeoLogVol;
-class GeoShape;
-class GeoMaterial;
-class GeoNameTag;
-class GeoSerialDenominator;
-class GeoAlignableTransform;
-class GeoTransform;
-class GeoSerialTransformer;
-class GeoGraphNode;
-//class GeoXF;
-//class GeoXF::Function;
-
-using namespace GeoGenfun;
-using namespace GeoXF;
-
-typedef const Function & TRANSFUNCTION;
-
-
-namespace GeoModelPers {
-
-class GReadIn {
-public:
-
-	GReadIn(GMDBManager* db, unsigned long* progress = nullptr);
-	virtual ~GReadIn();
-
-	// void printRecords();
-	GeoPhysVol* buildGeoModel();
-
-private:
-
-//	static int dbCallbackPrint(void *NotUsed, int nColRow, char **fieldsRow, char **colNamesRow);
-//	static int dbCallbackBuild(void *NotUsed, int nColRow, char **fieldsRow, char **colNamesRow);
-
-	GeoPhysVol* buildGeoModelByCalls();
-	GeoPhysVol* buildGeoModelOneGo();
-
-	GeoPhysVol* loopOverAllChildren();
-
-	GeoPhysVol* getRootVolume();
-
-	GeoVPhysVol* parseChildren(GeoVPhysVol* vol, QMap<unsigned int, QStringList> children, int depth = 0);
-	GeoVPhysVol* parseVPhysVol(QStringList values, QString nodeType, int depth = 0);
-	GeoVPhysVol* buildVPhysVol(QString id, QString tableId, QString copyNumber);
-	//GeoLogVol* parseLogVol(QStringList values);
-	GeoLogVol* buildLogVol(QString id);
-	//GeoShape* parseShape(QStringList values);
-	GeoShape* buildShape(QString id);
-	//GeoMaterial* parseMaterial(QStringList values);
-	GeoMaterial* buildMaterial(QString id);
-	GeoSerialDenominator* parseSerialDenominator(QStringList values);
-	GeoSerialDenominator* buildSerialDenominator(QString id);
-	GeoAlignableTransform* parseAlignableTransform(QStringList values);
-	GeoAlignableTransform* buildAlignableTransform(QString id);
-	GeoTransform* parseTransform(QStringList values);
-	GeoTransform* buildTransform(QString id);
-	GeoSerialTransformer* parseSerialTransformer(QStringList values);
-	GeoSerialTransformer* buildSerialTransformer(QString id);
-	// TRANSFUNCTION parseFunction(QStringList values);
-	// TRANSFUNCTION parseFunction(const QStringList& values);
-	// TRANSFUNCTION parseFunction(const int& id, const std::string& expr);
-	TRANSFUNCTION parseFunction(const std::string& expr);
-	TRANSFUNCTION buildFunction(QString id);
-	GeoNameTag* parseNameTag(QStringList values);
-	GeoNameTag* buildNameTag(QString id);
-
-
-	GeoShape* getShape(QString id);
-
-	void volAddHelper(GeoVPhysVol* vol, GeoGraphNode* volChild);
-
-	bool isNodeBuilt(const QString id, const QString tableId, const QString copyNumber);
-	GeoGraphNode* getNode(const QString id, const QString tableId, const QString copyNumber);
-	void storeNode(const QString id, const QString tableId, const QString copyNumber, GeoGraphNode* node);
-
-	void checkInputString(QString input);
-
-
-
-	// input arguments
-	GeoPhysVol* m_root;
-	GMDBManager* m_dbManager;
-	unsigned long* m_progress;
-	bool m_deepDebug;
-
-
-	// SQLite variables
-//	sqlite3* _db;
-//	char * _zErrMsg;
-//	int _rc;
-//	char const * _sql;
-//	const char* _data;
-
-	// data containers
-
-	QHash<QString, QMap<unsigned int, QStringList>> m_allchildren; // key = "parentId:parentTable", item = list of children parameters, inserted by child position
-
-	QHash<unsigned int, QStringList> m_physVols;
-	QHash<unsigned int, QStringList> m_fullPhysVols;
-	QHash<unsigned int, QStringList> m_logVols;
-	QHash<unsigned int, QStringList> m_shapes;
-	QHash<unsigned int, QStringList> m_materials;
-	QHash<unsigned int, QStringList> m_transforms;
-	QHash<unsigned int, QStringList> m_alignableTransforms;
-	QHash<unsigned int, QStringList> m_serialDenominators;
-	QHash<unsigned int, QStringList> m_serialTransformers;
-	QHash<unsigned int, QStringList> m_functions;
-	QHash<unsigned int, QStringList> m_nameTags;
-
-	QHash<unsigned int, QString> m_tableid_tableName;
-
-	QStringList m_root_vol_data;
-
-	QHash<QString, GeoGraphNode*> m_memMap;
-
-	std::set<std::string> m_unknown_shapes;
-
-};
-
-} /* namespace GeoModelPers */
-#endif /* GEOMODELREADIN_H_ */
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/CMakeLists.txt.example b/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/CMakeLists.txt.example
deleted file mode 100644
index ebd59ff7533a8cc43cda245ec15502351f9622e7..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/CMakeLists.txt.example
+++ /dev/null
@@ -1,34 +0,0 @@
-cmake_minimum_required(VERSION 3.1.0)
-
-project(hellogeo)
-
-# Find includes in corresponding build directories
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
-# Instruct CMake to run moc automatically when needed
-set(CMAKE_AUTOMOC ON)
-
-
-# Find the Qt5 libraries, used e.g. to interface with the SQlite DB
-find_package(Qt5 COMPONENTS Core Sql Widgets REQUIRED)
-# Instruct CMake to run Qt5 moc automatically when needed
-set(CMAKE_AUTOMOC ON)
-
-# The project needs VP1Light to build against:
-find_package( VP1Light REQUIRED )
-
-
-# Populate a CMake variable with the sources
-set(SRCS
-    main.cpp
-)
-
-# Tell CMake to create the helloworld executable
-add_executable( hellogeo ${SRCS} )
-
-# Linknall needed libraries
-target_link_libraries( hellogeo Qt5::Core Qt5::Sql VP1Light::GeoModelDBManager VP1Light::GeoRead VP1Light::GeoModelKernel VP1Light::GeoModelUtilities ) 
-
-# Add the BUILDVP1Light definition to switch off the compilation of any part of the code which is Athena-specific
-target_compile_definitions( hellogeo PUBLIC BUILDVP1LIGHT )
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/main.cpp.example b/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/main.cpp.example
deleted file mode 100644
index 93b644918c5f68711ce8b18f668183eb955fae8e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/examples/hellogeo/main.cpp.example
+++ /dev/null
@@ -1,131 +0,0 @@
-
-#include "GeoModelDBManager/GMDBManager.h"
-#include "GeoRead/GReadIn.h"
-
-#include "GeoModelUtilities/GeoModelExperiment.h"
-#include "GeoModelKernel/GeoBox.h"
-#include "GeoModelKernel/GeoPhysVol.h"
-#include "GeoModelKernel/GeoFullPhysVol.h"
-#include "GeoModelKernel/GeoNameTag.h"
-
-#include <QCoreApplication>
-#include <QString>
-#include <QDebug>
-#include <QFileInfo>
-
-#include <iostream>
-
-
-
-GeoModelExperiment* createTheExperiment(GeoPhysVol* world)
-{
-  if (world == nullptr)
-  {
-    // Setup the 'World' volume from which everything else will be suspended
-    double densityOfAir=0.1;
-    const GeoMaterial* worldMat = new GeoMaterial("std::Air", densityOfAir);
-    const GeoBox* worldBox = new GeoBox(1000*CLHEP::cm, 1000*CLHEP::cm, 1000*CLHEP::cm);
-    const GeoLogVol* worldLog = new GeoLogVol("WorldLog", worldBox, worldMat);
-    // GeoPhysVol* worldPhys = new GeoPhysVol(worldLog);
-    world = new GeoPhysVol(worldLog);
-  }
-  // Setup the 'Experiment' manager
-  GeoModelExperiment* theExperiment = new GeoModelExperiment(world);
-  return theExperiment;
-}
-
-
-
-int main(int argc, char *argv[])
-{
-  QCoreApplication app(argc, argv);
-    
-  // GET GEOMETRY FROM LOCAL DB
-  // Set valid db path before first run
-  static const QString path = "../geometry.db";
-  qDebug() << "Using this DB file:" << path;
-
-  // check if DB file exists. If not, return
-  if (! QFileInfo(path).exists() ) {
-        qWarning() << "ERROR!! DB '" << path << "' does not exist!!";
-        qWarning() << "Returning..." << "\n";
-        // return;
-        throw;
-  }
-
-  // open the DB
-  GMDBManager* db = new GMDBManager(path);
-  /* Open database */
-  if (db->isOpen()) { 
-    qDebug() << "OK! Database is open!";
-  }
-  else {
-    qDebug() << "Database is not open!";
-    // return;
-    throw;
-  }
-
-  // -- testing the input database
-  std::cout << "Printing the list of all GeoMaterial nodes" << std::endl;
-  db->printAllMaterials();
-
-  /* setup the GeoModel reader */
-  GeoModelPers::GReadIn readInGeo = GeoModelPers::GReadIn(db);
-  qDebug() << "GReadIn set.";
-  
-
-  /* build the GeoModel geometry */
-  GeoPhysVol* dbPhys = readInGeo.buildGeoModel(); // builds the whole GeoModel tree in memory 
-  qDebug() << "GReadIn::buildGeoModel() done.";
-
-  // create the world volume container and its manager
-  GeoModelExperiment* theExperiment = createTheExperiment(dbPhys);
-  qDebug() << "ATLAS Geometry is built.";
-  
-
-  // --- testing the imported ATLAS Geometry
-  
-  // get the 'world' volume, i.e. the root volume of the GeoModel tree
-  std::cout << "Getting the 'world' GeoPhysVol, i.e. the root volume of the GeoModel tree" << std::endl;  
-  GeoPhysVol* world = theExperiment->getPhysVol();
-  
-  // get the 'world' GeoLogVol
-  std::cout << "Getting the GeoLogVol used by the 'world' volume" << std::endl;
-  const GeoLogVol* logVol = world->getLogVol();
-  std::cout << "'world' GeoLogVol name: " << logVol->getName() << std::endl;
-  std::cout << "'world' GeoMaterial name: " << logVol->getMaterial()->getName() << std::endl;
-
-  // get number of children volumes
-  unsigned int nChil = world->getNChildVols();
-  std:: cout << "'world' number of children: " << nChil << std::endl;
-
-  // loop over all children nodes
-  std::cout << "Looping over all 'volume' children (i.e., GeoPhysVol and GeoFullPhysVol)..." << std::endl;
-  for (unsigned int idx=0; idx<nChil; ++idx) {
-	PVConstLink nodeLink = world->getChildVol(idx);
-
-	if ( dynamic_cast<const GeoVPhysVol*>( &(*( nodeLink ))) ) {
-		std::cout << "\t" << "the child n. " << idx << " ";
-		const GeoVPhysVol *childVolV = &(*( nodeLink ));
-		if ( dynamic_cast<const GeoPhysVol*>(childVolV) ) {
-			const GeoPhysVol* childVol = dynamic_cast<const GeoPhysVol*>(childVolV);
-			std::cout << "is a GeoPhysVol, whose GeoLogVol name is: " << childVol->getLogVol()->getName() << std::endl;
-		} else if ( dynamic_cast<const GeoFullPhysVol*>(childVolV) ) {
-			const GeoFullPhysVol* childVol = dynamic_cast<const GeoFullPhysVol*>(childVolV);
-			std::cout << "is a GeoFullPhysVol, whose GeoLogVol name is: " << childVol->getLogVol()->getName() << std::endl;
-		}
-        } else if ( dynamic_cast<const GeoNameTag*>( &(*( nodeLink ))) ) {
-		qDebug() << "\t" << "the child n. " << idx << " is a GeoNameTag";
-		const GeoNameTag *childVol = dynamic_cast<const GeoNameTag*>(&(*( nodeLink )));
-		std::cout << "\t\tGeoNameTag's name: " << childVol->getName() << std::endl;
-        }
-  }
-
-  qDebug() << "Everything done.";
-
-  return app.exec();
-}
-
-
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/src/GReadIn.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/src/GReadIn.cpp
deleted file mode 100644
index 7788ea3ecf7995989c5279ee8885b8575a9648ba..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoRead/src/GReadIn.cpp
+++ /dev/null
@@ -1,1741 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
- * GeoModelReadIn.cpp
- *
- *  Created on: May 20, 2016
- *      Author: rbianchi
- */
-
-// local includes
-#include "GeoRead/GReadIn.h"
-
-// SQLite
-//#include "sqlite/sqlite3.h"
-//#include <sqlite3.h>
-
-// TFPersistification includes
-#include "TFPersistification/TransFunctionInterpreter.h"
-
-// GeoModelKernel
-#include "GeoModelKernel/GeoTransform.h"
-#include "GeoModelKernel/GeoAlignableTransform.h"
-#include "GeoModelKernel/GeoSerialTransformer.h"
-#include "GeoModelKernel/GeoSerialDenominator.h"
-#include "GeoModelKernel/GeoMaterial.h"
-#include "GeoModelKernel/GeoNameTag.h"
-#include "GeoModelKernel/GeoLogVol.h"
-#include "GeoModelKernel/GeoPhysVol.h"
-#include "GeoModelKernel/GeoFullPhysVol.h"
-#include "GeoModelKernel/GeoGraphNode.h"
-
-// GeoModel shapes
-#include "GeoModelKernel/GeoBox.h"
-#include "GeoModelKernel/GeoCons.h"
-#include "GeoModelKernel/GeoPara.h"
-#include "GeoModelKernel/GeoPcon.h"
-#include "GeoModelKernel/GeoPgon.h"
-#include "GeoModelKernel/GeoSimplePolygonBrep.h"
-#include "GeoModelKernel/GeoTrap.h"
-#include "GeoModelKernel/GeoTrd.h"
-#include "GeoModelKernel/GeoTube.h"
-#include "GeoModelKernel/GeoTubs.h"
-#include "GeoModelKernel/GeoShapeIntersection.h"
-#include "GeoModelKernel/GeoShapeShift.h"
-#include "GeoModelKernel/GeoShapeSubtraction.h"
-#include "GeoModelKernel/GeoShapeUnion.h"
-
-// Units
-#include "GeoModelKernel/Units.h"
-#define SYSTEM_OF_UNITS GeoModelKernelUnits // so we will get, e.g., 'GeoModelKernelUnits::cm'
-
-// TODO: to remove once the migration to Eigen is complete
-#include "CLHEP/Vector/Rotation.h"
-#include "CLHEP/Geometry/Transform3D.h"
-#include "GeoPrimitives/CLHEPtoEigenConverter.h" // TODO: to be removed when dropping CLHEP
-
-//VP1Base
-// TODO: we should get rid of VP1Base::VP1Msg dependency, since GeoRead should not depend on VP1 packages. Maybe we can move VP1Msg to a standalone package.
-//#include "VP1Base/VP1Msg.h"
-
-// Qt includes
-#include <QDebug>
-
-
-using namespace GeoGenfun;
-using namespace GeoXF;
-
-
-namespace GeoModelPers {
-
-GReadIn::GReadIn(GMDBManager* db, unsigned long* progress) : m_progress(nullptr), m_deepDebug(false)
-{
-	qDebug() << "DumpGeoModelAction: constructor";
-
-	#ifdef GEOREAD_DEEP_DEBUG
-	  m_deepDebug = true;
- 	#endif
-
-        if ( progress != nullptr) {
-	    m_progress = progress;
-	}
-
-	// set the geometry file
-	m_dbManager = db;
-	if (m_dbManager->isOpen()) {
-		qDebug() << "OK! Database is open!";
-	}
-	else {
-		qWarning() << "ERROR!! Database is NOT open!";
-		return;
-	}
-}
-
-GReadIn::~GReadIn() {
-	// TODO Auto-generated destructor stub
-}
-
-
-///*
-// * Arguments:
-// *
-// *   unused - Ignored in this case, see the documentation for sqlite3_exec
-// *    count - The number of columns in the result set
-// *     data - The row's data
-// *  columns - The column names
-// */
-//int GReadIn::dbCallbackBuild(void* unused, int nColRow, char **fieldsRow, char **colNamesRow){
-//
-//	GReadIn* instance = (GReadIn*) unused;
-//
-//	for(int i=0; i<nColRow; i++){
-//
-//		std::string colName = colNamesRow[i];
-//		std::string fieldRow = fieldsRow[i];
-//
-//		printf("Building %s = %s\n", colNamesRow[i], fieldsRow[i] ? fieldsRow[i] : "NULL");
-//
-//		if ( colName == "SHAPE" ) {
-//
-//			if (fieldRow == "Box")
-//				instance->buildShape();
-//		}
-//
-//	}
-//	printf("\n");
-//	return 0;
-//}
-
-// void GReadIn::buildShape()
-// {
-// 	//	const GeoBox *box = new GeoBox(1200*CLHEP::cm,1200*CLHEP::cm, 1200*CLHEP::cm);
-// }
-
-
-
-
-// void GReadIn::printRecords()
-// {
-// 	// FETCH RECORDS AND PRINT THEM
-//
-// }
-
-
-
-GeoPhysVol* GReadIn::buildGeoModel()
-{
-	qDebug() << "GReadIn::buildGeoModel()";
-
-	// return buildGeoModelByCalls();
-
-	GeoPhysVol* rootVolume = buildGeoModelOneGo();
-
-	if (m_unknown_shapes.size() > 0) {
-		qWarning() << "WARNING!! There were unknwon shapes:";
-		for ( auto it = m_unknown_shapes.begin(); it != m_unknown_shapes.end(); it++ ) {
-			std::cout << "---> " << *it << std::endl;
-		}
-		std::cout << "Remember: unknown shapes are rendered with a dummy cube of 30cm side length." << std::endl;
-		}
-
-	return rootVolume;
-}
-
-/*
-GeoPhysVol* GReadIn::buildGeoModelByCalls()
-{
-	QStringList rootValues = m_dbManager->getRootPhysVol();
-	//	qDebug() << "rootValues:" << rootValues;
-
-	QString nodeType = rootValues.takeFirst(); // it takes out the first element
-
-	// get GeoModel node. Depth == -1 means "get all children volumes / all levels"
-	// m_root = dynamic_cast<GeoPhysVol*>(parseVPhysVol(rootValues, nodeType, -1));
-	m_root = dynamic_cast<GeoPhysVol*>(parseVPhysVol(rootValues, nodeType));
-
-	// TODO: check if shared nodes are restored only one and then used when needed,
-	// or they are restored with a new node in memory every time they are met
-
-	return m_root;
-}
-*/
-
-GeoPhysVol* GReadIn::buildGeoModelOneGo()
-{
-	qDebug() << "GReadIn::buildGeoModelOneGo()";
-
-	// get all objects from the DB
-	m_physVols = m_dbManager->getTableFromNodeType("GeoPhysVol");
-	std::cout << "GeoPhysVol, read in." << std::endl;
-	m_fullPhysVols = m_dbManager->getTableFromNodeType("GeoFullPhysVol");
-	std::cout << "GeoFullPhysVol, read in." << std::endl;
-	m_logVols = m_dbManager->getTableFromNodeType("GeoLogVol");
-	std::cout << "GeoLogVol, read in." << std::endl;
-	m_shapes = m_dbManager->getTableFromNodeType("GeoShape");
-	std::cout << "GeoShape, read in." << std::endl;
-	m_materials = m_dbManager->getTableFromNodeType("GeoMaterial");
-	std::cout << "GeoMaterial, read in." << std::endl;
-	m_functions = m_dbManager->getTableFromNodeType("Function");
-	std::cout << "Function, read in." << std::endl;
-	m_serialDenominators = m_dbManager->getTableFromNodeType("GeoSerialDenominator");
-	std::cout << "GeoSerialDenominator, read in." << std::endl;
-	m_serialTransformers = m_dbManager->getTableFromNodeType("GeoSerialTransformer");
-	std::cout << "GeoSerialTransformer, read in." << std::endl;
-	m_alignableTransforms = m_dbManager->getTableFromNodeType("GeoAlignableTransform");
-	std::cout << "GeoAlignableTransform, read in." << std::endl;
-	m_transforms = m_dbManager->getTableFromNodeType("GeoTransform");
-	std::cout << "GeoTransform, read in." << std::endl;
-	m_nameTags = m_dbManager->getTableFromNodeType("GeoNameTag");
-	std::cout << "GeoNameTag, read in." << std::endl;
-	// qDebug() << "physVols: " << m_physVols;
-	// qDebug() << "fullPhysVols: " << m_fullPhysVols;
-
-	// get DB metadata
-	m_tableid_tableName = m_dbManager->getAll_TableIDsNodeTypes();
-	std::cout << "DB metadata, read in." << std::endl;
-
-	// get the children table from DB
-	m_allchildren = m_dbManager->getChildrenTable();
-	// qDebug() << "all children from DB:" << m_allchildren;
-	std::cout << "children positions, read in." << std::endl;
-
-	// get the root volume data
-	m_root_vol_data = m_dbManager->getRootPhysVol();
-	std::cout << "root volume data, read in." << std::endl;
-
-	return loopOverAllChildren();
-}
-
-
-// //----------------------------------------
-// GeoPhysVol* GReadIn::loopOverAllChildren()
-// {
-// 	QMessageBox msgBox;
-// 	msgBox.setText("The document has been modified.");
-// 	msgBox.exec();
-// }
-
-//----------------------------------------
-GeoPhysVol* GReadIn::loopOverAllChildren()
-{
-
-  std::cout << "Looping over all children to build the GeoModel tree..." << std::endl;
-
-  int nChildrenRecords = m_allchildren.size();
-
-  // This should go in VP1Light, not in this library. The library could be used by standalone apps without a GUI
-  /*
-    QProgressDialog progress("Loading the geometry...", "Abort Loading", 0, nChildrenRecords, 0);
-    progress.setWindowModality(Qt::WindowModal);
-    progress.show();
-  */
-
-  // loop over parents' keys
-  int counter = 0;
-  foreach (const QString &parentKey, m_allchildren.keys() ) {
-
-    /* //This should go in VP1Light as well!
-       if (progress.wasCanceled()) {
-       std::cout << "You aborted the loading of the geometry." << std::endl;
-
-       QMessageBox msgBox;
-       msgBox.setText("You aborted the loading of the geometry.");
-       msgBox.setInformativeText("Do you want to really abort it?");
-       msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
-       msgBox.setDefaultButton(QMessageBox::No);
-       int ret = msgBox.exec();
-
-       switch (ret) {
-       case QMessageBox::Yes:
-       // Abort the loading of the geometry
-       break;
-       case QMessageBox::No:
-       // Continue with the loading of the geometry
-       progress.reset();
-       default:
-       // should never be reached
-       break;
-       }
-       }
-    */
-
-
-
-    ++counter;
-    std::cout.precision(0);
-    if ( nChildrenRecords < 10000 && counter % 500 == 0 ) {
-      float done = ( (float)counter / nChildrenRecords) * 100;
-      std::cout << "\t" << std::fixed << counter << "children records processed [" << done << "%]" << std::endl;
-      if ( m_progress != nullptr  ) {
-        //progress.setValue(counter); // This hould go in VP1Light
-        *m_progress = counter;
-      }
-    }
-    else if ( nChildrenRecords > 10000 && counter % 2000 == 0 ) {
-      float done = ( (float)counter / nChildrenRecords) * 100;
-      std::cout << "\t" << std::fixed << counter << " children records processed [" << done << "%]" << std::endl;
-      if ( m_progress != nullptr ) {
-        //progress.setValue(counter); // This should go in VP1Light
-        *m_progress = counter;
-      }
-    }
-    if (m_deepDebug) qDebug() << "\nparent: " << parentKey << ':' << m_allchildren.value(parentKey) << "[parentId, parentType, parentCopyNumber, childPos, childType, childId, childCopyN]";
-
-    // get the parent's details
-    QStringList parentKeyItems = parentKey.split(":");
-    QString parentId = parentKeyItems[0];
-    QString parentTableId = parentKeyItems[1];
-    QString parentCopyN = parentKeyItems[2];
-    if (m_deepDebug) qDebug() << "parent ID:" << parentId << ", parent table ID:" << parentTableId << ", parent copy number:" << parentCopyN;
-
-    bool isRootVolume = false;
-    if (parentId == "NULL") {
-      isRootVolume = true;
-    }
-
-    GeoVPhysVol* parentVol = nullptr;
-
-    // build or get parent volume.
-    // Using the parentCopyNumber here, to get a given instance of the parent volume
-    if (!isRootVolume) {
-      if (m_deepDebug) qDebug() << "get the parent volume...";
-      parentVol = buildVPhysVol( parentId, parentTableId, parentCopyN);
-    }
-
-
-    // get the parent's children
-    QMap<unsigned int, QStringList> children = m_allchildren.value(parentKey);
-
-
-
-    // loop over children, sorted by child position automatically
-    // "id", "parentId", "parentTable", "parentCopyNumber", "position", "childTable", "childId", "childCopyNumber"
-    if (m_deepDebug) qDebug() << "parent volume has " << children.size() << "children. Looping over them...";
-    foreach(QStringList child, children) {
-
-      if (m_deepDebug) qDebug() << "child:" << child;
-
-      // build or get child node
-      QString childTableId = child[5];
-      QString childId = child[6];
-      QString childCopyN = child[7];
-
-      QString childNodeType = m_tableid_tableName[childTableId.toUInt()];
-
-      if (m_deepDebug) qDebug() << "childTableId:" << childTableId << ", type:" << childNodeType << ", childId:" << childId;
-
-      if (childNodeType.isEmpty()) {
-        qWarning("ERROR!!! childNodeType is empty!!! Aborting...");
-        exit(1);
-      }
-
-      if (childNodeType == "GeoPhysVol") {
-        if (m_deepDebug) qDebug() << "GeoPhysVol child...";
-        GeoVPhysVol* childNode = dynamic_cast<GeoPhysVol*>(buildVPhysVol(childId, childTableId, childCopyN));
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoFullPhysVol") {
-        if (m_deepDebug) qDebug() << "GeoFullPhysVol child...";
-        GeoVPhysVol* childNode = dynamic_cast<GeoFullPhysVol*>(buildVPhysVol(childId, childTableId, childCopyN));
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoSerialDenominator") {
-        if (m_deepDebug) qDebug() << "GeoSerialDenominator child...";
-        GeoSerialDenominator* childNode = buildSerialDenominator(childId);
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoAlignableTransform") {
-        if (m_deepDebug) qDebug() << "GeoAlignableTransform child...";
-        GeoAlignableTransform* childNode = buildAlignableTransform(childId);
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoTransform") {
-        if (m_deepDebug) qDebug() << "GeoTransform child...";
-        GeoTransform* childNode = buildTransform(childId);
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoSerialTransformer") {
-        if (m_deepDebug) qDebug() << "GeoSerialTransformer child...";
-        GeoSerialTransformer* childNode = buildSerialTransformer(childId);
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else if (childNodeType == "GeoNameTag") {
-        if (m_deepDebug) qDebug() << "GeoNameTag child...";
-        GeoNameTag* childNode = buildNameTag(childId);
-        if (!isRootVolume) volAddHelper(parentVol, childNode);
-      }
-      else {
-        QString msg = "[" + childNodeType + "]" + QString(" ==> ERROR!!! - The conversion for this type of child node needs to be implemented, still!!!");
-        qFatal("%s", msg.toLatin1().constData());
-      }
-
-    } // loop over all children
-  } // loop over childrenPositions records
-
-  // return the root volume
-  return getRootVolume();
-}
-
-
-// GReadIn::buildNode( QStringList volParams, QString nodeType )
-// {
-// 		if( nodeType == "GeoPhysVol") {
-//
-// 		} else {
-// 			qWarning() << "WARNING!! Node type Unknown!!";
-// 		}
-// }
-
-
-
-
-
-// GeoPhysVol* GReadIn::getGeoModelHandle()
-// {
-// 	QStringList rootValues = m_dbManager->getRootPhysVol();
-// 	//	qDebug() << "rootValues:" << rootValues;
-//
-// 	QString nodeType = rootValues.takeFirst(); // it takes out the first element
-//
-// 	// get GeoModel node. Depth == 1 means "get only first level children"
-// 	m_root = dynamic_cast<GeoPhysVol*>(parseVPhysVol(rootValues, nodeType, 1));
-//
-// 	// TODO: check if shared nodes are restored only one and then used when needed,
-// 	// or they are restored with a new node in memory every time they are met
-//
-// 	return m_root;
-// }
-
-/*
-  GeoVPhysVol* GReadIn::parseChildren(GeoVPhysVol* vol, QMap<unsigned int, QStringList> children, int depth)
-  {
-  qDebug() << "GReadIn::parseChildren()";
-
-  //qDebug() << "children:" << children;
-
-  // get parent volume type
-  QString volType;
-  if (dynamic_cast<GeoPhysVol*>(vol))
-  volType = "GeoPhysVol";
-  else if (dynamic_cast<GeoFullPhysVol*>(vol))
-  volType = "GeoFullPhysVol";
-  else
-  qWarning() << "ERROR!! Unknown vol type!!";
-
-  QMap<unsigned int, QStringList>::const_iterator it; // we don't modify the map, so we use a const_iterator, which is is slightly faster as well.
-
-  for ( it = children.begin(); it != children.end(); ++it) {
-  qDebug() << "\nchild item:" << it.key() << ":" << it.value();
-
-  // QString id = it.value()[0];
-  // QString parentId = it.value()[1];
-  // QString parentTableId = it.value()[2];
-  // QString childPosition = it.value()[3];
-  unsigned int childTableId = it.value()[4].toUInt();
-  unsigned int childId = it.value()[5].toUInt();
-
-  // QString parentTable = m_dbManager->getTableNameFromTableId(parentTableId.toUInt());
-
-  QStringList child = m_dbManager->getItemAndType(childTableId, childId );
-  qDebug() << "child:" << child;
-
-  QString nodeType = child.takeFirst(); // it pops out the first element, leaving the other items in the list
-
-  if (depth > 0) {
-  depth = depth - 1; // decrease the depth by one
-  }
-
-  if (nodeType == "GeoPhysVol") {
-  // if ( childId != parentId.toUInt() ) {
-  if (child.length() > 0) {
-  // build the node
-  GeoPhysVol* volChild = dynamic_cast<GeoPhysVol*>(parseVPhysVol(child, nodeType, depth));
-  // add the node to the parent
-  volAddHelper(vol, volChild);
-  } else {
-  qWarning() << "WARNING!!!" << "The PhysVol" << childId << "is empty/not-existing!!! To be investigated why...! Skipping now...";
-  }
-  // } else {
-  // 	qWarning() << "WARNING!!" << "childId and parentId are the same! That means an infinite loop!! To be investigated! Skipping now...";
-  // }
-  }
-  else if (nodeType == "GeoFullPhysVol") {
-  if (child.length() > 0) {
-  GeoFullPhysVol* volChild = dynamic_cast<GeoFullPhysVol*>(parseVPhysVol(child, nodeType, depth));
-  volAddHelper(vol, volChild);
-  } else {
-  qWarning() << "WARNING!!!" << "The PhysVol" << childId << "is empty/not-existing!!! To be investigated why...! Skipping now...";
-  }
-  }
-  else if (nodeType == "GeoSerialDenominator") {
-  GeoSerialDenominator* volChild = parseSerialDenominator(child);
-  volAddHelper(vol, volChild);
-  // vol->add(volChild);
-  }
-  else if (nodeType == "GeoAlignableTransform") {
-  GeoAlignableTransform* volChild = parseAlignableTransform(child);
-  volAddHelper(vol, volChild);
-  // vol->add(volChild);
-  }
-  else if (nodeType == "GeoTransform") {
-  GeoTransform* volChild = parseTransform(child);
-  volAddHelper(vol, volChild);
-  // vol->add(volChild);
-  }
-  else if (nodeType == "GeoSerialTransformer") {
-  GeoSerialTransformer* volChild = parseSerialTransformer(child);
-  volAddHelper(vol, volChild);
-  // vol->add(volChild);
-  }
-  else if (nodeType == "GeoNodeTag") { // TODO: implement it!!
-  QString msg = nodeType + QString(" GeoNodeTag needs to be implemented!!!");
-  qWarning() << msg;
-  }
-  else {
-  QString msg = nodeType + QString(" child-->GeoModel conversion for this type still needs to be implemented!!!");
-  qWarning() << msg;
-  }
-
-  }
-  // this below is to suppress the compiler warning,
-  // but it should not be reached, so we use a qFatal
-  qFatal("This code should not be reached!!! Aborting...");
-  GeoVPhysVol* volnull = nullptr;
-  return volnull;
-  }
-*/
-
-void GReadIn::volAddHelper(GeoVPhysVol* vol, GeoGraphNode* volChild)
-{
-  if (dynamic_cast<GeoPhysVol*>(vol)) {
-    GeoPhysVol* volume = dynamic_cast<GeoPhysVol*>(vol);
-    volume->add(volChild);
-  } else if (dynamic_cast<GeoFullPhysVol*>(vol)) {
-    GeoFullPhysVol* volume = dynamic_cast<GeoFullPhysVol*>(vol);
-    volume->add(volChild);
-  }
-}
-
-/*
-// Instantiate a PhysVol and get its children
-GeoVPhysVol* GReadIn::parseVPhysVol(QStringList values, QString nodeType, int depth)
-{
-qDebug() << "GReadIn::parseVPhysVol()";
-
-QString volId = values[0];
-QString logVolId = values[1];
-QString parentId = values[2];
-
-qDebug() << "\tPhysVol-ID:" << volId;
-qDebug() << "\tPhysVol-LogVol:" << logVolId;
-qDebug() << "\tPhysVol-parentId:" << parentId;
-qDebug() << "\tnodeType:" << nodeType;
-
-
-// GET LOGVOL
-// get logVol properties from the DB
-QStringList paramsLog = m_dbManager->getItem("GeoLogVol", logVolId.toUInt());
-qDebug() << "params:" << paramsLog;
-
-// build the LogVol
-GeoLogVol* logVol = parseLogVol(paramsLog);
-
-// a pointer to the VPhysVol
-GeoVPhysVol* vol = nullptr;
-
-// BUILD THE PHYSVOL OR THE FULLPHYSVOL
-if (nodeType == "GeoPhysVol")
-vol = new GeoPhysVol(logVol);
-else if (nodeType == "GeoFullPhysVol")
-vol = new GeoFullPhysVol(logVol);
-else
-qWarning() << "ERROR!!! Unkonwn node type!! : " << nodeType;
-
-
-// if we want to get the volume's children
-if (depth != 0) {
-
-// * check if the volume has children
-// get the IDs of all children of this PhysVol volume
-QMap<unsigned int, QStringList> children = m_dbManager->getVPhysVolChildren( volId.toUInt(), nodeType );
-qDebug() << "children of the " << nodeType << "node with Id:" << volId << " --> " << children;
-// if this PhysVol has children, build them and add them to it
-if (children.size() > 0)
-parseChildren(vol, children, depth);
-else
-qDebug() << "VPhysVol has no children";
-}
-
-return vol;
-}
-*/
-
-
-void GReadIn::checkInputString(QString input)
-{
-  if (input.isEmpty() || input.isNull() || input == "NULL") {
-    qWarning() << "ERROR!!! Input QString is empty or equal to 'NULL'!!! Aborting...";
-    exit(1);
-  }
-}
-
-// Instantiate a PhysVol and get its children
-GeoVPhysVol* GReadIn::buildVPhysVol(QString id, QString tableId, QString copyN)
-{
-  if (m_deepDebug) qDebug() << "GReadIn::buildVPhysVol()" << id << tableId << copyN;
-
-  checkInputString(id);
-  checkInputString(tableId);
-
-  // if previously built, return that
-  if (isNodeBuilt(id, tableId, copyN)) {
-    if (m_deepDebug) qDebug() << "getting the volume from memory...";
-    return dynamic_cast<GeoVPhysVol*>(getNode(id, tableId, copyN));
-  }
-
-  if (m_deepDebug) qDebug() << "building a new volume...";
-
-  // QString nodeType = m_dbManager->getNodeTypeFromTableId(tableId.toUInt());
-  QString nodeType = m_tableid_tableName[tableId.toUInt()];
-
-  // get the parent volume parameters
-  // here we do not need to use copyN, since the actual volume is the same for all instances
-  QStringList values;
-  if (nodeType == "GeoPhysVol")
-    values = m_physVols[id.toUInt()];
-  else if (nodeType == "GeoFullPhysVol")
-    values = m_fullPhysVols[id.toUInt()];
-
-
-
-  QString volId = values[0];
-  QString logVolId = values[1];
-  //QString parentId = values[2]; // FIXME: delete it, it is not used any more
-
-  if (m_deepDebug) {
-    qDebug() << "\tPhysVol-ID:" << volId;
-    qDebug() << "\tPhysVol-LogVol:" << logVolId;
-    //qDebug() << "\tPhysVol-parentId:" << parentId;
-    qDebug() << "\tnodeType:" << nodeType;
-  }
-
-  // GET LOGVOL
-  GeoLogVol* logVol = buildLogVol(logVolId);
-
-  // a pointer to the VPhysVol
-  GeoVPhysVol* vol = nullptr;
-
-  // BUILD THE PHYSVOL OR THE FULLPHYSVOL
-  if (nodeType == "GeoPhysVol")
-    vol = new GeoPhysVol(logVol);
-  else if (nodeType == "GeoFullPhysVol")
-    vol = new GeoFullPhysVol(logVol);
-  else
-    qWarning() << "ERROR!!! Unkonwn node type!! : " << nodeType;
-
-  // storing the address of the newly built node
-  storeNode(id, tableId, copyN, vol);
-
-  return vol;
-}
-
-
-// Get the root volume
-GeoPhysVol* GReadIn::getRootVolume()
-{
-  if (m_deepDebug) qDebug() << "GReadIn::getRootVolume()";
-  QString id = m_root_vol_data[1];
-  QString tableId = m_root_vol_data[2];
-  QString copyNumber = "1"; // the Root volume has only one copy by definition
-  return dynamic_cast<GeoPhysVol*>(buildVPhysVol(id, tableId, copyNumber));
-}
-
-
-
-/*
-  GeoMaterial* GReadIn::parseMaterial(QStringList values)
-  {
-  qDebug() << "GReadIn::parseMaterial()";
-
-  QString matId = values[0];
-  QString matName = values[1];
-
-  qDebug() << "\tMaterial-ID:" << matId << ", Material-name:" << matName;
-
-  // TODO: Bogus densities.  Later: read from database.
-  double densityOfAir=0.1;
-
-  return new GeoMaterial(matName.toStdString(),densityOfAir);
-
-  }
-*/
-
-
-GeoMaterial* GReadIn::buildMaterial(QString id)
-{
-  if (m_deepDebug) qDebug() << "GReadIn::buildMaterial()";
-  QStringList values = m_materials[id.toUInt()];
-
-  QString matId = values[0];
-  QString matName = values[1];
-
-  if (m_deepDebug) qDebug() << "\tMaterial-ID:" << matId << ", Material-name:" << matName;
-
-  // TODO: Bogus densities.  Later: read from database.
-  double densityOfAir=0.1;
-
-  return new GeoMaterial(matName.toStdString(),densityOfAir);
-
-}
-
-
-/*
-  GeoShape* GReadIn::parseShape(QStringList values)
-  {
-  qDebug() << "GReadIn::parseShape()";
-
-  QString id = values[0];
-  QString type = values[1];
-  QString parameters = values[2];
-
-  qDebug() << "\tShape-ID:" << id << ", Shape-type:" << type;
-
-  if (type == "Box") {
-
-  // needed parameters
-  double XHalfLength;
-  double YHalfLength;
-  double ZHalfLength;
-
-  // get parameters from DB string
-  QStringList shapePars = parameters.split(";");
-  foreach( QString par, shapePars) {
-  QStringList vars = par.split("=");
-  QString varName = vars[0];
-  QString varValue = vars[1];
-
-  if (varName == "XHalfLength") XHalfLength = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  if (varName == "YHalfLength") YHalfLength = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  }
-
-  // return new GeoBox(5.0*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm);
-  return new GeoBox(XHalfLength, YHalfLength, ZHalfLength);
-  }
-  else if (type == "Tube") {
-
-  // needed parameters
-  double RMin;
-  double RMax;
-  double ZHalfLength;
-
-  // get parameters from DB string
-  QStringList shapePars = parameters.split(";");
-  foreach( QString par, shapePars) {
-  QStringList vars = par.split("=");
-  QString varName = vars[0];
-  QString varValue = vars[1];
-
-  if (varName == "RMin") RMin = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  if (varName == "RMax") RMax = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble() * SYSTEM_OF_UNITS::mm;
-  }
-
-  // return new GeoBox(5.0*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm);
-  return new GeoTube(RMin, RMax, ZHalfLength);
-
-  }
-  else if (type == "Shift") {
-
-  // needed parameters
-  unsigned int shapeId;
-  unsigned int transfId;
-
-  // get parameters from DB string
-  QStringList shapePars = parameters.split(";");
-  foreach( QString par, shapePars) {
-  QStringList vars = par.split("=");
-  QString varName = vars[0];
-  QString varValue = vars[1];
-
-  if (varName == "A") shapeId = varValue.toUInt();
-  if (varName == "X") transfId = varValue.toUInt();
-  }
-
-  // get the referenced shape
-  const GeoShape* shapeA = getShape( QString::number(shapeId) );
-
-  // get the referenced HepGeom::Transform3D
-  QStringList transPars = m_dbManager->getItemFromTableName("Transforms", transfId);
-  qDebug() << "child:" << transPars;
-  GeoTransform* transf = parseTransform(transPars);
-  const HepGeom::Transform3D transfX = transf->getTransform();
-
-  // build and return the GeoShapeShift instance
-  return new GeoShapeShift(shapeA, transfX);
-  }
-  else if (type == "Pcon") {
-
-  // needed parameters
-  unsigned int SPhi;
-  unsigned int DPhi;
-
-  // get parameters from DB string
-  QStringList shapePars = parameters.split(";");
-  foreach( QString par, shapePars) {
-  QStringList vars = par.split("=");
-  QString varName = vars[0];
-  QString varValue = vars[1];
-
-  if (varName == "SPhi") SPhi = varValue.toUInt();
-  if (varName == "DPhi") DPhi = varValue.toUInt();
-  }
-
-  // return new shape
-  return new GeoPcon(SPhi, DPhi);
-  }
-  else {
-  QString msg = "WARNING!! - Shape '" + type + "' not implemented yet!!! Returning a dummy cube.";
-  qWarning() << msg;
-  return new GeoBox(30.0*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm); // FIXME: bogus shape. Use actual shape!
-  }
-
-  }
-*/
-
-GeoShape* GReadIn::buildShape(QString shapeId)
-{
-  if (m_deepDebug) qDebug() << "GReadIn::buildShape()";
-  QStringList paramsShape = m_shapes[ shapeId.toUInt() ];
-
-  QString id = paramsShape[0];
-  QString type = paramsShape[1];
-  QString parameters = paramsShape[2];
-
-  if (m_deepDebug) qDebug() << "\tShape-ID:" << id << ", Shape-type:" << type;
-
-  if (type == "Box") {
-    // shape parameters
-    double XHalfLength = 0.;
-    double YHalfLength = 0.;
-    double ZHalfLength = 0.;
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-    foreach( QString par, shapePars) {
-      QStringList vars = par.split("=");
-      QString varName = vars[0];
-      QString varValue = vars[1];
-      if (varName == "XHalfLength") XHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "YHalfLength") YHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-    }
-    return new GeoBox(XHalfLength, YHalfLength, ZHalfLength);
-  }
-  else if (type == "Cons") {
-    // shape parameters
-    double RMin1 = 0.;
-    double RMin2 = 0.;
-    double RMax1 = 0.;
-    double RMax2 = 0.;
-    double DZ = 0.;
-    double SPhi = 0.;
-    double DPhi = 0.;
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-    foreach( QString par, shapePars) {
-      QStringList vars = par.split("=");
-      QString varName = vars[0];
-      QString varValue = vars[1];
-      if (varName == "RMin1") RMin1 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "RMin2") RMin2 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "RMax1") RMax1 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "RMax2") RMax2 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "DZ") DZ = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "SPhi") SPhi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "SPDPhihi") DPhi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-    }
-    return new GeoCons (RMin1, RMin2, RMax1, RMax2, DZ, SPhi, DPhi);
-  }
-  else if (type == "Para") {
-    // shape parameters
-    double XHalfLength = 0.;
-    double YHalfLength = 0.;
-    double ZHalfLength = 0.;
-    double Alpha = 0.;
-    double Theta = 0.;
-    double Phi = 0.;
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-    foreach( QString par, shapePars) {
-      QStringList vars = par.split("=");
-      QString varName = vars[0];
-      QString varValue = vars[1];
-      if (varName == "XHalfLength") XHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "YHalfLength") YHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "Alpha") Alpha = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "Theta") Theta = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-      if (varName == "Phi") Phi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-    }
-    return new GeoPara (XHalfLength, YHalfLength, ZHalfLength, Alpha, Theta, Phi);
-  }
-  else if (type == "Pcon") {
-    // shape parameters
-    double SPhi = 0.;
-    double DPhi = 0.;
-    unsigned int NZPlanes = 0;
-
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-
-    bool error = 0;
-    QString par;
-    QStringList vars;
-    QString varName;
-    QString varValue;
-
-    GeoPcon* pcon = nullptr;
-
-    int sizePars = shapePars.size();
-    // check if we have more than 3 parameters
-    if (sizePars > 3) {
-
-      // get the three first GeoPcon parameters: the SPhi and DPhi angles, plus the number of Z planes
-      for( int it=0; it < 3; it++) {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        if (varName == "SPhi") SPhi = varValue.toDouble();
-        if (varName == "DPhi") DPhi = varValue.toDouble();
-        if (varName == "NZPlanes") NZPlanes = varValue.toDouble();
-      }
-      // build the basic GeoPcon shape
-      pcon = new GeoPcon(SPhi, DPhi);
-
-      // and now loop over the rest of the list, to get the parameters of all Z planes
-      for (int it=3; it < sizePars; it++)
-      {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        // qInfo() << "it:" << it << "par:" << par << "varName:" << varName << "varValue:" << varValue;
-
-        if (varName == "ZPos") {
-
-          double zpos = varValue.toDouble();
-          double rmin=0., rmax=0.;
-
-          it++; // go to next variable
-
-          par = shapePars[it];
-          vars = par.split("=");
-          varName = vars[0];
-          varValue = vars[1];
-          if (varName == "ZRmin") rmin = varValue.toDouble();
-          else error = 1;
-          it++; // go to next variable
-
-          par = shapePars[it];
-          vars = par.split("=");
-          varName = vars[0];
-          varValue = vars[1];
-          if (varName == "ZRmax") rmax = varValue.toDouble();
-          else error = 1;
-
-          if(error) qWarning() << "ERROR! GeoPcon 'ZRmin' and 'ZRmax' values are not at the right place! --> " << shapePars;
-
-          // add a Z plane to the GeoPcon
-          pcon->addPlane(zpos, rmin, rmax);
-        } else {
-          error = 1;
-          qWarning() << "ERROR! GeoPcon 'ZPos' value is not at the right place! --> " << shapePars;
-        }
-      }
-
-      // sanity check on the resulting Pcon shape
-      if( pcon->getNPlanes() != NZPlanes) {
-        error = 1;
-        qWarning() << "ERROR! GeoPcon number of planes: " << QString::number(pcon->getNPlanes()) << " is not equal to the original size! --> " << shapePars;
-      }
-      if(!pcon->isValid()) {
-        error = 1;
-        qWarning() << "ERROR! GeoPcon shape is not valid!! -- input: " << shapePars;
-      }
-    } // end if (size>3)
-    else {
-      qWarning() << "ERROR!! GeoPcon has no Z planes!! --> shape input parameters: " << shapePars;
-      error = 1;
-    }
-
-    if(error) qFatal("GeoPcon shape error!!! Aborting...");
-
-    return pcon;
-  }
-  else if (type == "Pgon") {
-    // shape parameters
-    double SPhi = 0.;
-    double DPhi = 0.;
-    unsigned int NSides = 0;
-    unsigned int NZPlanes = 0;
-
-    bool error = false;
-    GeoPgon* pgon = nullptr;
-    QString par;
-    QStringList vars;
-    QString varName;
-    QString varValue;
-
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-    // qInfo() << "shapePars: " << shapePars; // debug
-
-    int sizePars = shapePars.size();
-    // check if we have more than 3 parameters
-    if (sizePars > 3) {
-
-      // get the first four GeoPgon parameters: the SPhi and DPhi angles, plus the number of Z planes
-      for( int it=0; it < 4; it++) {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        // qInfo() << "vars: " << vars; // for debug only
-        if (varName == "SPhi") SPhi = varValue.toDouble();
-        if (varName == "DPhi") DPhi = varValue.toDouble();
-        if (varName == "NSides") NSides = varValue.toUInt();// * SYSTEM_OF_UNITS::mm;
-        if (varName == "NZPlanes") NZPlanes = varValue.toDouble();
-
-      }
-      // build the basic GeoPgon shape
-      pgon = new GeoPgon(SPhi, DPhi, NSides);
-
-      // and now loop over the rest of the list, to get the parameters of all Z planes
-      for (int it=4; it < sizePars; it++)
-      {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        // qInfo() << "it:" << it << "par:" << par << "varName:" << varName << "varValue:" << varValue;
-
-        if (varName == "ZPos") {
-
-          double zpos = varValue.toDouble();
-          double rmin=0., rmax=0.;
-
-          it++; // go to next variable
-
-          par = shapePars[it];
-          vars = par.split("=");
-          varName = vars[0];
-          varValue = vars[1];
-          if (varName == "ZRmin") rmin = varValue.toDouble();
-          else error = 1;
-          it++; // go to next variable
-
-          par = shapePars[it];
-          vars = par.split("=");
-          varName = vars[0];
-          varValue = vars[1];
-          if (varName == "ZRmax") rmax = varValue.toDouble();
-          else error = 1;
-
-          if(error) qWarning() << "ERROR! GeoPgon 'ZRmin' and 'ZRmax' values are not at the right place! --> " << shapePars;
-
-          // add a Z plane to the GeoPgon
-          pgon->addPlane(zpos, rmin, rmax);
-        } else {
-          error = 1;
-          qWarning() << "ERROR! GeoPgon 'ZPos' value is not at the right place! --> " << shapePars;
-        }
-      }
-
-      // sanity check on the resulting Pgon shape
-      if( pgon->getNPlanes() != NZPlanes) {
-        error = 1;
-        qWarning() << "ERROR! GeoPgon number of planes: " << QString::number(pgon->getNPlanes()) << " is not equal to the original size! --> " << shapePars;
-      }
-      if(!pgon->isValid()) {
-        error = 1;
-        qWarning() << "ERROR! GeoPgon shape is not valid!! -- input: " << shapePars;
-      }
-    } // end if (size>3)
-    else {
-      qWarning() << "ERROR!! GeoPgon has no Z planes!! --> shape input parameters: " << shapePars;
-      error = 1;
-    }
-    if(error) qFatal("GeoPgon shape error!!! Aborting...");
-    return pgon;
-  }
-  else if (type == "SimplePolygonBrep")
-  {
-    //qInfo() << "Reading-in: SimplePolygonBrep: "; // debug
-    // shape parameters
-    double DZ = 0.;
-    unsigned int NVertices = 0;
-    double xV = 0.;
-    double yV = 0.;
-
-    bool error = 0;
-    GeoSimplePolygonBrep* sh = nullptr;
-    QString par;
-    QStringList vars;
-    QString varName;
-    QString varValue;
-
-    // get parameters from DB string
-    QStringList shapePars = parameters.split(";");
-    //qInfo() << "shapePars: " << shapePars; // debug
-
-    int sizePars = shapePars.size();
-    // check if we have more than 2 parameters
-    if (sizePars > 2) {
-
-      // get the first two GeoSimplePolygonBrep parameters: DZ and the number of vertices.
-      for( int it=0; it < 2; it++) {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        // qInfo() << "vars: " << vars; // for debug only
-        if (varName == "DZ") DZ = varValue.toDouble();
-        if (varName == "NVertices") NVertices = varValue.toDouble();
-        //else if (varName == "NVertices") NVertices = varValue.toDouble();
-        //else error = 1;
-        //if(error) qWarning() << "ERROR! GeoSimplePolygonBrep parameters are not correctly stored! -->" << vars;
-
-      }
-      // build the basic GeoSimplePolygonBrep shape
-      sh = new GeoSimplePolygonBrep(DZ);
-
-      // and now loop over the rest of the list, to get the parameters of all vertices
-      for (int it=2; it < sizePars; it++)
-      {
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        if (varName == "xV") xV = varValue.toDouble();
-        else error = 1;
-
-        it++; // go to next variable (they come in pairs)
-
-        par = shapePars[it];
-        vars = par.split("=");
-        varName = vars[0];
-        varValue = vars[1];
-        if (varName == "yV") yV = varValue.toDouble();
-        else error = 1;
-
-        if(error) qWarning() << "ERROR! GeoSimplePolygonBrep 'xVertex' and 'yVertex' values are not at the right place! --> " << shapePars;
-
-        // add a Z plane to the GeoSimplePolygonBrep
-        sh->addVertex(xV, yV);
-      }
-      // sanity check on the resulting shape
-      if( sh->getNVertices() != NVertices) {
-        error = 1;
-        qWarning() << "ERROR! GeoSimplePolygonBrep number of planes: " << QString::number(sh->getNVertices()) << " is not equal to the original size! --> " << shapePars;
-      }
-      if(!sh->isValid()) {
-        error = 1;
-qWarning() << "ERROR! GeoSimplePolygonBrep shape is not valid!! -- input: " << shapePars;
-			}
-		} // end if (size>3)
-		else {
-			qWarning() << "ERROR!! GeoSimplePolygonBrep has no vertices!! --> shape input parameters: " << shapePars;
-			error = 1;
-		}
-		if(error) qFatal("GeoSimplePolygonBrep shape error!!! Aborting...");
-		return sh;
-
-	}
-	else if (type == "Trap") {
-			// shape constructor parameters
-			double ZHalfLength = 0.;
-			double Theta = 0.;
-			double Phi = 0.;
-			double Dydzn = 0.;
-			double Dxdyndzn = 0.;
-			double Dxdypdzn = 0.;
-			double Angleydzn = 0.;
-			double Dydzp = 0.;
-			double Dxdyndzp = 0.;
-			double Dxdypdzp = 0.;
-			double Angleydzp = 0.;
-			// get parameters from DB string
-			QStringList shapePars = parameters.split(";");
-			foreach( QString par, shapePars) {
-					QStringList vars = par.split("=");
-					QString varName = vars[0];
-					QString varValue = vars[1];
-					if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Theta") Theta = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Phi") Phi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dydzn") Dydzn = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dxdyndzn") Dxdyndzn = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dxdypdzn") Dxdypdzn = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Angleydzn") Angleydzn = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dydzp") Dydzp = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dxdyndzp") Dxdyndzp = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Dxdypdzp") Dxdypdzp = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "Angleydzp") Angleydzp = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			}
-		return new GeoTrap (ZHalfLength, Theta, Phi, Dydzn, Dxdyndzn, Dxdypdzn, Angleydzn, Dydzp, Dxdyndzp, Dxdypdzp, Angleydzp);
-	}
-	else if (type == "Trd") {
-			// shape constructor parameters
-			double XHalfLength1 = 0.;
-			double XHalfLength2 = 0.;
-			double YHalfLength1 = 0.;
-			double YHalfLength2 = 0.;
-			double ZHalfLength = 0.;
-			// get parameters from DB string
-			QStringList shapePars = parameters.split(";");
-			foreach( QString par, shapePars) {
-					QStringList vars = par.split("=");
-					QString varName = vars[0];
-					QString varValue = vars[1];
-					if (varName == "XHalfLength1") XHalfLength1 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "XHalfLength2") XHalfLength2 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "YHalfLength1") YHalfLength1 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "YHalfLength2") YHalfLength2 = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-					if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			}
-		return new GeoTrd (XHalfLength1, XHalfLength2, YHalfLength1, YHalfLength2, ZHalfLength);
-	}
-	else if (type == "Tube") {
-		// shape parameters
-		double RMin = 0.;
-		double RMax = 0.;
-		double ZHalfLength = 0.;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "RMin") RMin = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "RMax") RMax = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-		}
-		return new GeoTube(RMin, RMax, ZHalfLength);
-	}
-	else if (type == "Tubs") {
-		// shape parameters
-		double RMin = 0.;
-		double RMax = 0.;
-		double ZHalfLength = 0.;
-		double SPhi = 0.;
-		double DPhi = 0.;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "RMin") RMin = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "RMax") RMax = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "ZHalfLength") ZHalfLength = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "SPhi") SPhi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-			if (varName == "DPhi") DPhi = varValue.toDouble();// * SYSTEM_OF_UNITS::mm;
-		}
-		return new GeoTubs (RMin, RMax, ZHalfLength, SPhi, DPhi);
-	}
-	else if (type == "Intersection") {
-		// shape parameters
-		unsigned int opA = 0;
-		unsigned int opB = 0;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "opA") opA = varValue.toUInt();
-			if (varName == "opB") opB = varValue.toUInt();
-		}
-		// get the referenced shape
-		const GeoShape* shapeA = buildShape( QString::number(opA) );
-		const GeoShape* shapeB = buildShape( QString::number(opB) );
-		// build and return the GeoShapeShift instance
-		return new GeoShapeIntersection(shapeA, shapeB);
-	}
-	else if (type == "Shift") {
-		// shape parameters
-		unsigned int shapeId = 0;
-		unsigned int transfId = 0;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "A") shapeId = varValue.toUInt();
-			if (varName == "X") transfId = varValue.toUInt();
-		}
-		// get the referenced shape
-		// const GeoShape* shapeA = getShape( QString::number(shapeId) );
-		const GeoShape* shapeA = buildShape( QString::number(shapeId) );
-		// get the referenced HepGeom::Transform3D
-		QStringList transPars = m_dbManager->getItemFromTableName("Transforms", transfId);
-		if (m_deepDebug) qDebug() << "child:" << transPars;
-		GeoTransform* transf = parseTransform(transPars);
-		const GeoTrf::Transform3D transfX = transf->getTransform();
-		// build and return the GeoShapeShift instance
-		return new GeoShapeShift(shapeA, transfX);
-	}
-	else if (type == "Subtraction") {
-		// shape parameters
-		unsigned int opA = 0;
-		unsigned int opB = 0;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "opA") opA = varValue.toUInt();
-			if (varName == "opB") opB = varValue.toUInt();
-		}
-		// get the referenced shape
-
-		//if (VP1Msg::debug())
-    		//VP1Msg::messageDebug("GeoSubstraction - building shape A...\n");
-
-		const GeoShape* shapeA = buildShape( QString::number(opA) );
-
-		/*
-		if (VP1Msg::debug()) {
-			QString msg = QString::fromStdString(shapeA->type());
-    			VP1Msg::messageDebug("GeoSubstraction - built shape A: "+msg);
-    			VP1Msg::messageDebug("GeoSubstraction - building shape B...\n");
-    		}
-		*/
-
-		const GeoShape* shapeB = buildShape( QString::number(opB) );
-
-		/*
-		if (VP1Msg::debug()) {
-			QString msg = QString::fromStdString(shapeB->type());
-    			VP1Msg::messageDebug("GeoSubstraction - built shape B: "+msg+"\n");
-    		}
-		*/
-
-		// build and return the GeoShapeShift instance
-		return new GeoShapeSubtraction(shapeA, shapeB);
-	}
-	else if (type == "Union") {
-		// shape parameters
-		unsigned int opA = 0;
-		unsigned int opB = 0;
-		// get parameters from DB string
-		QStringList shapePars = parameters.split(";");
-		foreach( QString par, shapePars) {
-			QStringList vars = par.split("=");
-			QString varName = vars[0];
-			QString varValue = vars[1];
-			if (varName == "opA") opA = varValue.toUInt();
-			if (varName == "opB") opB = varValue.toUInt();
-		}
-		if (opA == 0 || opB == 0) std::cout << "ERROR! 'GeoUnion' shape: opA or opB have not been properly intialized!" << std::endl;
-		// get the referenced shape
-		const GeoShape* shapeA = buildShape( QString::number(opA) );
-		const GeoShape* shapeB = buildShape( QString::number(opB) );
-		// build and return the GeoShapeShift instance
-		return new GeoShapeUnion(shapeA, shapeB);
-	}
-	else {
-		// QString msg = "WARNING!! - Shape '" + type + "' not implemented yet!!! Returning a dummy cube.";
-		// qWarning(msg.toStdString().c_str());
-		m_unknown_shapes.insert(type.toStdString()); // save unknwon shapes for later warning message
-		return new GeoBox(30.0*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm); // FIXME: bogus shape. Use actual shape!
-	}
-
-}
-
-
-
-/*
-GeoLogVol* GReadIn::parseLogVol(QStringList values)
-{
-	qDebug() << "GReadIn::parseLogVol()";
-
-	QString logVolName = values[1];
-
-	// GET LOGVOL SHAPE
-	QString shapeId = values[2];
-
-	// qDebug() << "shape Id:" << shapeId;
-	// QStringList paramsShape = m_dbManager->getItem("GeoShape", shapeId.toUInt());
-  // qDebug() << "shape parameters from DB: " << paramsShape;
-	// GeoShape* shape = parseShape(paramsShape);
-
-	GeoShape* shape = getShape(shapeId);
-
-	// GET LOGVOL MATERIAL
-	QString matId = values[3];
-	QStringList paramsMat = m_materials[ matId.toUInt() ];
-	GeoMaterial* mat = parseMaterial(paramsMat);
-
-	// instantiate teh GeoLogVol
-	return new GeoLogVol(logVolName.toStdString(), shape, mat);
-
-}
-*/
-
-
-GeoLogVol* GReadIn::buildLogVol(QString logVolId)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildLogVol()";
-
-	// get logVol properties from the DB
-	QStringList values = m_logVols[logVolId.toUInt()];
-	if (m_deepDebug) qDebug() << "params:" << values;
-
-	// build the LogVol
-	QString logVolName = values[1];
-
-	// GET LOGVOL SHAPE
-	QString shapeId = values[2];
-	GeoShape* shape = buildShape(shapeId);
-
-	// GET LOGVOL MATERIAL
-	QString matId = values[3];
-	if (m_deepDebug) qDebug() << "material Id:" << matId;
-	GeoMaterial* mat = buildMaterial(matId);
-
-	return new GeoLogVol(logVolName.toStdString(), shape, mat);
-
-}
-
-/*
-GeoShape* GReadIn::getShape(QString shapeId){
-	qDebug() << "shape Id:" << shapeId;
-	QStringList paramsShape = m_dbManager->getItem("GeoShape", shapeId.toUInt());
-	qDebug() << "shape parameters from DB: " << paramsShape;
-	GeoShape* shape = parseShape(paramsShape);
-	return shape;
-}
-*/
-
-
-GeoSerialDenominator* GReadIn::buildSerialDenominator(QString id)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildSerialDenominator()";
-	return parseSerialDenominator( m_serialDenominators[id.toUInt()] );
-}
-
-GeoSerialDenominator* GReadIn::parseSerialDenominator(QStringList values)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::parseSerialDenominator()";
-	QString id = values[0];
-	QString baseName = values[1];
-	if (m_deepDebug) qDebug() << "\tID:" << id << ", base-name:" << baseName;
-	return new GeoSerialDenominator(baseName.toStdString());
-}
-
-GeoAlignableTransform* GReadIn::buildAlignableTransform(QString id)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildAlignableTransform()";
-	return parseAlignableTransform( m_alignableTransforms[id.toUInt()] );
-}
-
-GeoAlignableTransform* GReadIn::parseAlignableTransform(QStringList values)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::parseAlignableTransform()";
-
-	QString id = values.takeFirst(); // it pops out the first element, leaving the other items in the list
-
-	// get the 12 matrix elements
-	double xx = values[0].toDouble();
-	double xy = values[1].toDouble();
-	double xz = values[2].toDouble();
-
-	double yx = values[3].toDouble();
-	double yy = values[4].toDouble();
-	double yz = values[5].toDouble();
-
-	double zx = values[6].toDouble();
-	double zy = values[7].toDouble();
-	double zz = values[8].toDouble();
-
-	double dx = values[9].toDouble();
-	double dy = values[10].toDouble();
-	double dz = values[11].toDouble();
-
-	// TODO: move to GeoModelKernel::GeoTrf (Eigen)
-	// build a rotation matrix with the first 9 elements
-	CLHEP::HepRotation R;
-	R.set(CLHEP::Hep3Vector(xx,yx,zx),
-			CLHEP::Hep3Vector(xy,yy,zy),
-			CLHEP::Hep3Vector(xz,yz,zz));
-	// build a translation vector with the last 3 elements
-	CLHEP::Hep3Vector D(dx,dy,dz);
-	// build the Transformation
-	const HepGeom::Transform3D xf(R, D);
-
-	return new GeoAlignableTransform( Amg::CLHEPTransformToEigen(xf) );
-}
-
-GeoTransform* GReadIn::buildTransform(QString id)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildTransform()";
-	return parseTransform( m_transforms[id.toUInt()] );
-}
-
-GeoTransform* GReadIn::parseTransform(QStringList values)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::parseTransform()";
-	if (m_deepDebug) qDebug() << "values:" << values;
-
-	QString id = values.takeFirst(); // it pops out the first element, leaving the other items in the list
-
-	// get the 12 matrix elements
-	double xx = values[0].toDouble();
-	double xy = values[1].toDouble();
-	double xz = values[2].toDouble();
-
-	double yx = values[3].toDouble();
-	double yy = values[4].toDouble();
-	double yz = values[5].toDouble();
-
-	double zx = values[6].toDouble();
-	double zy = values[7].toDouble();
-	double zz = values[8].toDouble();
-
-	double dx = values[9].toDouble();
-	double dy = values[10].toDouble();
-	double dz = values[11].toDouble();
-
-	// build a rotation matrix with the first 9 elements
-	// TODO: move to GeoModelKernel GeoTrf (Eigen)
-	CLHEP::HepRotation R;
-	R.set(CLHEP::Hep3Vector(xx,yx,zx),
-			CLHEP::Hep3Vector(xy,yy,zy),
-			CLHEP::Hep3Vector(xz,yz,zz));
-	// build a translation vector with the last 3 elements
-	CLHEP::Hep3Vector D(dx,dy,dz);
-	// build the Transformation
-	const HepGeom::Transform3D xf(R, D);
-
-	return new GeoTransform( Amg::CLHEPTransformToEigen(xf) );
-}
-
-/*
-GeoSerialTransformer* GReadIn::parseSerialTransformer(QStringList values)
-{
-	qDebug() << "GReadIn::parseSerialTransformer()";
-	qDebug() << "values:" << values;
-
-	QString id = values[0];
-	QString functionId = values[1];
-	QString physVolId = values[2];
-	QString physVolTableIdStr = values[3];
-	QString copies = values[4];
-
-	unsigned int physVolTableId = physVolTableIdStr.toUInt();
-
-	// QString physVolType = m_dbManager->getNodeTypeFromTableId(physVolTableId);
-	QString physVolType = m_tableid_tableName[physVolTableId];
-
-	qDebug() << "\tID:" << id << ", functionId:" << functionId << ", physVolId:" << physVolId << ", physVolTableId:" << physVolTableId << ", copies:" << copies;
-
-	// GET FUNCTION
-	qDebug() << "function Id:" << functionId;
-	QStringList paramsFunc = m_dbManager->getItem("Function", functionId.toUInt());
-	// TRANSFUNCTION func = parseFunction(paramsFunc);
-	TRANSFUNCTION func = parseFunction(paramsFunc[1].toStdString());
-
-	// GET PHYSVOL
-	qDebug() << "referenced physVol - Id:" << physVolId << ", type:" << physVolType;
-	QStringList paramsPhysVol = m_dbManager->getItem(physVolTableId, physVolId.toUInt());
-	const GeoVPhysVol* physVol = parseVPhysVol(paramsPhysVol, physVolType);
-	//qDebug() << "physVol:" << physVol << ", function:" << &func;
-
-	// get PhysVol or FullPhysVol pointer and return the SerialTransformer
-	if (dynamic_cast<const GeoFullPhysVol*>(physVol)) {
-		const GeoFullPhysVol* vol = dynamic_cast<const GeoFullPhysVol*>(physVol);
-		return new GeoSerialTransformer(vol, &func, copies.toUInt() );
-	}
-	const GeoPhysVol* vol = dynamic_cast<const GeoPhysVol*>(physVol);
-	return new GeoSerialTransformer(vol, &func, copies.toUInt() );
-
-}
-*/
-
-GeoSerialTransformer* GReadIn::buildSerialTransformer(QString nodeId)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildSerialTransformer()";
-
-	QStringList values = m_serialTransformers[nodeId.toUInt()];
-	if (m_deepDebug) qDebug() << "values:" << values;
-
-	// std::cout <<"ST * " << values[0].toStdString() << " " << values[1].toStdString() << " " << values[2].toStdString() << std::endl;
-	if (m_deepDebug) qDebug() << "ST * " << values[0] << ", " << values[1] << ", " << values[2] << ", " << values[3] << ", " << values[4];
-
-	QString id = values[0];
-	QString functionId = values[1];
-	QString physVolId = values[2];
-	QString physVolTableIdStr = values[3];
-	QString copies = values[4];
-
-	unsigned int physVolTableId = physVolTableIdStr.toUInt();
-
-	QString physVolType = m_tableid_tableName[physVolTableId];
-
-	if (m_deepDebug) qDebug() << "\tID:" << id << ", functionId:" << functionId << ", physVolId:" << physVolId << ", physVolTableId:" << physVolTableId << ", copies:" << copies;
-
-	// GET FUNCTION
-	if (m_deepDebug) qDebug() << "function Id:" << functionId;
-	TRANSFUNCTION func = buildFunction(functionId);
-
-	// GET PHYSVOL
-	if (m_deepDebug) qDebug() << "referenced physVol - Id:" << physVolId << ", type:" << physVolType << "tableId:" << physVolTableIdStr;
-	const GeoVPhysVol* physVol = buildVPhysVol(physVolId, physVolTableIdStr, "1"); // we use "1" as default copyNumber: taking the first copy of the VPhysVol as the referenced volume
-	//qDebug() << "physVol:" << physVol << ", function:" << &func;
-
-	// get PhysVol or FullPhysVol pointer and return the SerialTransformer
-	if (dynamic_cast<const GeoFullPhysVol*>(physVol)) {
-		const GeoFullPhysVol* vol = dynamic_cast<const GeoFullPhysVol*>(physVol);
-		return new GeoSerialTransformer(vol, &func, copies.toUInt() );
-	}
-	const GeoPhysVol* vol = dynamic_cast<const GeoPhysVol*>(physVol);
-	return new GeoSerialTransformer(vol, &func, copies.toUInt() );
-
-}
-
-TRANSFUNCTION GReadIn::buildFunction(QString id)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildFunction()";
-
-	// return parseFunction( m_functions[id.toUInt()] );
-
-	// return parseFunction( m_functions[id.toUInt()] );
-
-	QStringList values = m_functions[id.toUInt()];
-	// return parseFunction( values[0].toUInt(), values[1].toStdString() );
-	return parseFunction( values[1].toStdString() );
-
-
-}
-
-// TRANSFUNCTION GReadIn::parseFunction(QStringList values)
-// {
-// 	qDebug() << "GReadIn::parseFunction()";
-// 	qDebug() << "values:" << values;
-// 	QString id = values[0];
-// 	QString expression = values[1];
-// 	if (expression.size() == 0) {
-// 			qFatal("FATAL ERROR!! Function expression is empty!! Aborting...");
-// 			abort();
-// 	}
-// 	TransFunctionInterpreter interpreter;
-// 	qDebug() << "expression:" << expression;
-// 	TFPTR func=interpreter.interpret( expression.toStdString() );
-// 	qDebug() << "expression interpreted";
-// 	return *(func.release()); // make func returns a pointer to the managed object and releases the ownership, then get the object dereferencing the pointer
-// }
-
-
-// TRANSFUNCTION GReadIn::parseFunction(const QStringList& values)
-// {
-// 	qDebug() << "GReadIn::parseFunction(const QStringList& values)";
-// 	qDebug() << "values:" << values;
-// 	int id = values[0].toUInt();
-// 	std::string expression = values[1].toStdString();
-// 	if (expression.size() == 0) {
-// 			qFatal("FATAL ERROR!! Function expression is empty!! Aborting...");
-// 			abort();
-// 	}
-// 	TransFunctionInterpreter interpreter;
-// 	qDebug() << "expression:" << expression;
-// 	TFPTR func=interpreter.interpret( expression );
-// 	qDebug() << "expression interpreted";
-// 	return *(func.release()); // make func returns a pointer to the managed object and releases the ownership, then get the object dereferencing the pointer
-// }
-
-
-// TRANSFUNCTION GReadIn::parseFunction(const int& id, const std::string& expr)
-TRANSFUNCTION GReadIn::parseFunction(const std::string& expr)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::parseFunction(const std::string& expr)";
-	// qDebug() << "id:" << Qstring::number(id) << " - expression: " << QString::fromStdString(expr);
-	if (m_deepDebug) qDebug() << "expression: " << QString::fromStdString(expr);
-
-	if (expr.empty()) {
-			qFatal("FATAL ERROR!! Function expression is empty!! Aborting...");
-			abort();
-	}
-
-	TransFunctionInterpreter interpreter;
-	if (m_deepDebug) qDebug() << "expression:" << QString::fromStdString(expr);
-	TFPTR func=interpreter.interpret( expr );
-	if (m_deepDebug) qDebug() << "expression interpreted";
-	return *(func.release()); // make func returns a pointer to the managed object and releases the ownership, then get the object dereferencing the pointer
-}
-
-GeoNameTag* GReadIn::buildNameTag(QString id)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::buildNameTag()";
-	return parseNameTag( m_nameTags[id.toUInt()] );
-}
-
-GeoNameTag* GReadIn::parseNameTag(QStringList values)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::parseNameTag()";
-	QString id = values[0];
-	QString name = values[1];
-	if (m_deepDebug) qDebug() << "nameTag:" << name;
-	return new GeoNameTag(name.toStdString());
-}
-
-
-bool GReadIn::isNodeBuilt(const QString id, const QString tableId, const QString copyNumber)
-{
-	// qDebug() << "GReadIn::isNodeBuilt(): " << id << tableId << copyNumber;
-	QString key = id + ":" + tableId + ":" + copyNumber;
-	return m_memMap.contains(key);
-}
-
-
-GeoGraphNode* GReadIn::getNode(const QString id, const QString tableId, const QString copyN)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::getNode(): " << id << tableId << copyN;
-	QString key = id + ":" + tableId + ":" + copyN;
-	return m_memMap[key];
-}
-
-void GReadIn::storeNode(const QString id, const QString tableId, const QString copyN, GeoGraphNode* node)
-{
-	if (m_deepDebug) qDebug() << "GReadIn::storeNode(): " << id << tableId << copyN << node;
-	QString key = id + ":" + tableId + ":" + copyN;
-	m_memMap[key] = node;
-}
-
-
-} /* namespace GeoModelPers */
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/CMakeLists.txt b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/CMakeLists.txt
deleted file mode 100644
index c9908b1876183d8ebc01778335a466e74a6ce496..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-################################################################################
-# Package: GeoWrite
-################################################################################
-
-# Declare the package name:
-atlas_subdir( GeoWrite )
-
-# Declare the package's dependencies:
-# TODO: we can skip the dependency on GeoPrimitives when we convert all methods to Eigen (GeoTrf::Transform3D)
-atlas_depends_on_subdirs( PUBLIC
-                          DetectorDescription/GeoPrimitives
-                          )
-
-# External dependencies:
-find_package( Qt5 COMPONENTS Core ) # needed for Qt containers
-find_package( CLHEP )  # to be dropped when migrated to new Eigen-based GeoTrf
-find_package( Eigen )
-find_package( GeoModelCore )
-
-
-if(CMAKE_BUILD_TYPE MATCHES Release)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment if you need debug messages in Release build
-endif(CMAKE_BUILD_TYPE MATCHES Release)
-if(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment if you need debug messages in RelWithDebInfo build
-endif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
-if(CMAKE_BUILD_TYPE MATCHES Debug)
-    add_definitions(-DQT_NO_DEBUG_OUTPUT) # comment if you need debug messages in Debug build
-endif(CMAKE_BUILD_TYPE MATCHES Debug)
-
-# Component(s) in the package:
-atlas_add_library( GeoWrite
-                   src/*.cpp
-                   PUBLIC_HEADERS GeoWrite
-                   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${GEOMODELCORE_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${CLHEP_LIBRARIES} Qt5::Core ${GEOMODELCORE_LIBRARIES} GeoModelDBManager TFPersistification VP1Base )
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelAction.h.oldVersion b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelAction.h.oldVersion
deleted file mode 100644
index a0f2b3da9d24953efd6ce866af15c10b74616c3a..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelAction.h.oldVersion
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef DumpGeoModelAction_H
-#define DumpGeoModelAction_H
-
-// local includes
-
-
-#include "GeoModelDBManager/GMDBManager.h"
-
-// GeoModel includes
-#include "GeoModelKernel/GeoNodeAction.h"
-#include "GeoModelKernel/GeoGraphNode.h"
-#include "GeoModelKernel/GeoShape.h"
-#include "GeoModelKernel/GeoMaterial.h"
-#include "GeoModelKernel/GeoLogVol.h"
-#include "GeoModelKernel/GeoXF.h"
-#include "GeoModelKernel/GeoAlignableTransform.h"
-
-// Qt includes
-//#include <QSqlDatabase>
-#include <QStringList>
-#include <QVariant>
-#include <QString>
-#include <QMap>
-
-/**
- * \class DumpGeoModelAction
- *
- * DumpGeoModelAction acts on objects of the GeoModel tree
- * persitifying them offline.
- */
-class DumpGeoModelAction  : public GeoNodeAction
-{
-public:
-	/**
-	 * @brief Constructor
-	 *
-	 * Constructor sets up connection with db and opens it
-	 * @param path - absolute path to db file
-	 */
-	DumpGeoModelAction(GMDBManager& db);
-
-	/**
-	 * @brief Destructor
-	 */
-	~DumpGeoModelAction();
-
-	virtual void handlePhysVol (const GeoPhysVol *vol); //	Handles a physical volume.
-	virtual void handleFullPhysVol (const GeoFullPhysVol *vol);
-	virtual void handleSerialDenominator (const GeoSerialDenominator *sD); //	Handles a Serial Denominator.
-	virtual void handleSerialTransformer (const GeoSerialTransformer *obj);
-	virtual void handleTransform (const GeoTransform *);
-	virtual void handleNameTag (const GeoNameTag *);
-
-
-
-private:
-
-	// define copy constructor, needed for the GeoModelAction subclass
-	DumpGeoModelAction(const DumpGeoModelAction &right);
-
-	// define assignment operator, needed for the GeoModelAction subclass
-	DumpGeoModelAction & operator=(const DumpGeoModelAction &right);
-
-	void handleVPhysVolObjects(const GeoVPhysVol* vol);
-	void handleReferencedPhysVol (const GeoVPhysVol *vol); // Handles a physical volume referenced by a SerialTrasformer
-
-	void showMemoryMap();
-
-	//	bool isObjectStored(const GeoLogVol* pointer);
-	//	bool isObjectStored(const GeoMaterial* pointer);
-	//	bool isObjectStored(const GeoGraphNode* pointer);
-	//	bool isObjectStored(const GeoShape* pointer);
-
-	QVariant storeShape(const GeoShape* shape);
-	QVariant storeTranform(const GeoTransform* node);
-
-	QVariant storeObj(const GeoMaterial* pointer, const QString name);
-	QVariant storeObj(const GeoShape* pointer, const QString type, const QString parameters);
-	QVariant storeObj(const GeoLogVol* pointer, const QString name, const QVariant shapeId, const QVariant materialId);
-	QVariant storeObj(const GeoPhysVol* pointer, const QVariant logvolId, const QVariant parentId = QVariant(), bool isRootVolume = false );
-	QVariant storeObj(const GeoFullPhysVol* pointer, const QVariant logvolId, const QVariant parentId = QVariant(), bool isRootVolume = false );
-	QVariant storeObj(const GeoSerialDenominator* pointer, const QString baseName);
-	QVariant storeObj(const GeoSerialTransformer* pointer, const QVariant functionId, const QVariant volId, const QString volType, const unsigned int copies);
-	QVariant storeObj(const GeoXF::Function* pointer, const QString expression);
-	QVariant storeObj(const GeoTransform* pointer, const std::vector<double> parameters);
-	QVariant storeObj(const GeoAlignableTransform* pointer, const std::vector<double> parameters);
-	QVariant storeObj(const GeoNameTag* pointer, const QString name);
-
-	int getChildPosition(unsigned int parentId);
-	void storeChildPosition(const QVariant parentId, const QString parentType, const QVariant childVol, const unsigned int childPos, const QString childType);
-
-	//	int storeObj(const GeoGraphNode* pointer, const QVariant logvolId, const QVariant parentId = QVariant() );
-
-	bool isAddressStored(const QString address);
-	void storeAddress(const QString address, QVariant id);
-
-	QVariant getStoredIdFromAddress(QString address);
-
-	//	QVariant getStoredIdFromPointer(const GeoMaterial* pointer);
-	QString getAddressStringFromPointer(const GeoMaterial* pointer);
-	QString getAddressStringFromPointer(const GeoShape* pointer);
-	QString getAddressStringFromPointer(const GeoLogVol* pointer);
-	QString getAddressStringFromPointer(const GeoPhysVol* pointer);
-	QString getAddressStringFromPointer(const GeoVPhysVol* pointer);
-	QString getAddressStringFromPointer(const GeoSerialDenominator* pointer);
-	QString getAddressStringFromPointer(const GeoSerialTransformer* pointer);
-	QString getAddressStringFromPointer(const GeoXF::Function* pointer);
-	QString getAddressStringFromPointer(const GeoTransform* pointer);
-	QString getAddressStringFromPointer(const GeoNameTag* pointer);
-
-	QString getQStringFromOss(std::ostringstream &oss);
-
-	std::vector<double> getTransformParameters(HepGeom::Transform3D); // TODO: to be moved to an Utility class, so we can use it from TransFunctionRecorder as well.
-	QString getShapeParameters(const GeoShape*);
-
-	QString getGeoTypeFromVPhysVol(const GeoVPhysVol* vol);
-
-
-	GMDBManager* m_dbManager;
-
-	QMap<QString, QVariant> m_memMap; // TODO: maybe move to QHash??
-	QMap<QString, QString> m_memMap_Tables; // TODO: maybe move to QHash??
-	QMap<unsigned int, unsigned int> m_parentChildrenMap;
-
-	// keep track of the number of visited tree nodes
-	unsigned int m_len;
-	unsigned int m_len_nChild;
-
-	bool m_rootVolumeFound;
-
-};
-
-#endif // DumpGeoModelAction_H
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelActionLocal.h b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelActionLocal.h
deleted file mode 100644
index bbb8efe945dd6384a9794df9410f82e7ddebb398..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/DumpGeoModelActionLocal.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// author: Riccardo.Maria.Bianchi@cern.ch
-// major updates:
-// - Aug 2018
-// - Sep 2018
-
-#ifndef DumpGeoModelActionLocalLocal_H
-#define DumpGeoModelActionLocalLocal_H
-
-// local includes
-#include "GeoModelDBManager/GMDBManager.h"
-
-// GeoModel includes
-#include "GeoModelKernel/GeoNodeAction.h"
-#include "GeoModelKernel/GeoGraphNode.h"
-#include "GeoModelKernel/GeoShape.h"
-#include "GeoModelKernel/GeoMaterial.h"
-#include "GeoModelKernel/GeoElement.h"
-#include "GeoModelKernel/GeoLogVol.h"
-#include "GeoModelKernel/GeoXF.h"
-#include "GeoModelKernel/GeoAlignableTransform.h"
-
-// Qt includes
-//#include <QSqlDatabase>
-#include <QStringList>
-#include <QVariant>
-#include <QString>
-#include <QMap>
-
-// TODO: to remove once the migration to Eigen is complete
-// fwd declaration
-namespace HepGeom {
-	class Transform3D;
-}
-
-
-/**
- * \class DumpGeoModelActionLocal
- *
- * DumpGeoModelActionLocal acts on objects of the GeoModel tree
- * persitifying them offline.
- */
-class DumpGeoModelActionLocal  : public GeoNodeAction
-{
-public:
-	/**
-	 * @brief Constructor
-	 *
-	 * Constructor sets up connection with db and opens it
-	 * @param path - absolute path to db file
-	 */
-	DumpGeoModelActionLocal(GMDBManager& db);
-
-	/**
-	 * @brief Destructor
-	 */
-	~DumpGeoModelActionLocal();
-
-	virtual void handlePhysVol (const GeoPhysVol *vol); //	Handles a physical volume.
-	virtual void handleFullPhysVol (const GeoFullPhysVol *vol);
-	virtual void handleSerialDenominator (const GeoSerialDenominator *sD); //	Handles a Serial Denominator.
-	virtual void handleSerialTransformer (const GeoSerialTransformer *obj);
-	virtual void handleTransform (const GeoTransform *);
-	virtual void handleNameTag (const GeoNameTag *);
-
-	void saveToDB();
-
-
-private:
-
-	// define copy constructor, needed for the GeoModelAction subclass
-	DumpGeoModelActionLocal(const DumpGeoModelActionLocal &right);
-
-	// define assignment operator, needed for the GeoModelAction subclass
-	DumpGeoModelActionLocal & operator=(const DumpGeoModelActionLocal &right);
-
-	void handleVPhysVolObjects(const GeoVPhysVol* vol);
-	void handleReferencedVPhysVol (const GeoVPhysVol *vol); // Handles a physical volume referenced by a SerialTrasformer
-
-	void showMemoryMap();
-
-	QStringList getParentNode();
-
-	QVariant storeShape(const GeoShape* shape);
-	QVariant storeMaterial(const GeoMaterial* mat);
-	QVariant storeElement(const GeoElement* el);
-	QVariant storeTranform(const GeoTransform* node);
-
-	QVariant storeObj(const GeoMaterial* pointer, const QString name, const QString density, const QString elements);
-	QVariant storeObj(const GeoElement* pointer, const QString name, const QString symbol, const QString elZ, const QString elA);
-	QVariant storeObj(const GeoShape* pointer, const QString type, const QString parameters);
-	QVariant storeObj(const GeoLogVol* pointer, const QString name, const QVariant shapeId, const QVariant materialId);
-	QVariant storeObj(const GeoPhysVol* pointer, const QVariant logvolId, const QVariant parentId = QVariant(), bool isRootVolume = false );
-	QVariant storeObj(const GeoFullPhysVol* pointer, const QVariant logvolId, const QVariant parentId = QVariant(), bool isRootVolume = false );
-	QVariant storeObj(const GeoSerialDenominator* pointer, const QString baseName);
-	QVariant storeObj(const GeoSerialTransformer* pointer, const QVariant functionId, const QVariant volId, const QString volType, const unsigned int copies);
-	QVariant storeObj(const GeoXF::Function* pointer, const QString expression);
-	QVariant storeObj(const GeoTransform* pointer, const std::vector<double> parameters);
-	QVariant storeObj(const GeoAlignableTransform* pointer, const std::vector<double> parameters);
-	QVariant storeObj(const GeoNameTag* pointer, const QString name);
-
-	unsigned int addRecord(std::vector<QStringList>* container, const QStringList values) const;
-	QVariant addMaterial(const QString name, const QString density, const QString elements);
-	QVariant addElement(const QString name, const QString symbol, const QString elZ, const QString elA);
-	QVariant addNameTag(const QString name);
-	QVariant addAlignableTransform(const std::vector<double> params);
-	QVariant addTransform(const std::vector<double> params);
-	QVariant addFunction(const QString expression);
-	QVariant addSerialTransformer(const QVariant &funcId, const QVariant &physvolId, const QString volType, const unsigned int &copies);
-	QVariant addShape(const QString &type, const QString &parameters);
-	QVariant addSerialDenominator(const QString &baseName);
-	QVariant addPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume = false);
-	QVariant addFullPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume = false);
-	QVariant addLogVol(const QString &name, const QVariant &shapeId, const QVariant &materialId);
-    void addChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int parentCopyNumber, const unsigned int childPos, const QString childType, const unsigned int childCopyN);
-
-    unsigned int getChildPosition(QString parentId, QString parentType, unsigned int copyN);
-
-    unsigned int setVolumeCopyNumber(QString volId, QString volType);
-    unsigned int getLatestParentCopyNumber(QString parentId, QString parentType);
-
-	void storeChildPosition(const QVariant parentId, const QString parentType, const QVariant childVol, const unsigned int parentCopyNumber, const unsigned int childPos, const QString childType, const unsigned int childCopyN);
-
-	bool isAddressStored(const QString address);
-	void storeAddress(const QString address, QVariant id);
-
-	QVariant getStoredIdFromAddress(QString address);
-
-	QString getAddressStringFromPointer(const GeoMaterial* pointer);
-	QString getAddressStringFromPointer(const GeoElement* pointer);
-	QString getAddressStringFromPointer(const GeoShape* pointer);
-	QString getAddressStringFromPointer(const GeoLogVol* pointer);
-	QString getAddressStringFromPointer(const GeoPhysVol* pointer);
-	QString getAddressStringFromPointer(const GeoVPhysVol* pointer);
-	QString getAddressStringFromPointer(const GeoSerialDenominator* pointer);
-	QString getAddressStringFromPointer(const GeoSerialTransformer* pointer);
-	QString getAddressStringFromPointer(const GeoXF::Function* pointer);
-	QString getAddressStringFromPointer(const GeoTransform* pointer);
-	QString getAddressStringFromPointer(const GeoNameTag* pointer);
-
-	QString getQStringFromOss(std::ostringstream &oss);
-
-	std::vector<double> getTransformParameters(HepGeom::Transform3D); // TODO: to be moved to Eigen (GeoTrf) and to be moved to an Utility class, so we can use it from TransFunctionRecorder as well.
-	QString getShapeParameters(const GeoShape*);
-
-	QString getGeoTypeFromVPhysVol(const GeoVPhysVol* vol);
-
-	QString getIdFromNodeType(QString nodeType);
-
-    QString m_dbpath;
-	GMDBManager* m_dbManager;
-
-	QMap<QString, QVariant> m_memMap; // TODO: maybe move to QHash??
-	QHash<QString, unsigned int> m_memMap_Tables;
-    QMap<QString, unsigned int> m_parentChildrenMap2; // TODO: clean name!
-    QMap<QString, unsigned int> m_volumeCopiesMap;
-
-	// keep track of the number of visited tree nodes
-	unsigned int m_len;
-	unsigned int m_len_nChild;
-
-	bool m_rootVolumeFound;
-	bool m_unconnectedTree;
-
-	std::vector<QStringList> m_logVols;
-	std::vector<QStringList> m_physVols;
-	std::vector<QStringList> m_fullPhysVols;
-	std::vector<QStringList> m_shapes;
-	std::vector<QStringList> m_materials;
-	std::vector<QStringList> m_elements;
-	std::vector<QStringList> m_transforms;
-	std::vector<QStringList> m_alignableTransforms;
-	std::vector<QStringList> m_serialDenominators;
-	std::vector<QStringList> m_serialTransformers;
-	std::vector<QStringList> m_functions;
-	std::vector<QStringList> m_nameTags;
-
-	std::vector<QStringList> m_childrenPositions;
-	QStringList m_rootVolume;
-
-};
-
-#endif // DumpGeoModelActionLocal_H
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/WriteGeoModelAction.h.oldSqlite b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/WriteGeoModelAction.h.oldSqlite
deleted file mode 100644
index 081c1c107564bc24e74e0afbb2b80510c3ee1e9e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/GeoWrite/WriteGeoModelAction.h.oldSqlite
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-//
-//  GeoModel Action class to
-//	write a GeoModel tree to a database
-//
-//	Riccardo Maria BIANCHI
-//	University of Pittsburgh
-//  <rbianchi-AT-cern.ch>
-//
-//	May 2016
-//
-
-#ifndef WriteGeoModelAction_h
-#define WriteGeoModelAction_h 1
-
-// C++
-#include <unordered_map> // C++11
-#include <iostream>
-
-// GeoNodeAction
-#include "GeoModelKernel/GeoGraphNode.h"
-#include "GeoModelKernel/GeoNodeAction.h"
-#include "GeoModelKernel/GeoTraversalState.h"
-
-// Qt includes
-#include <QtSql>
-
-
-//typedef std::unordered_map<int,int> MemMap;
-typedef std::unordered_map<std::string,int> MemMap;
-
-
-// FWD declarations
-//class QSqlError;
-//class QSqlDatabase;
-//class QString;
-//class QVariant;
-//class QSqlQuery;
-
-//	This action prints the node tree.  It can be configured
-//	to print a message on the following types of nodes:
-//
-//	* Transforms
-//	* Physical Volumes and Full Physical Volumes.
-//	* Transforms
-//	* SerialDenominators
-//	* SerialTransforms
-//	* IdentifierTag
-//
-//	These must be switched on (using setNotificationState())
-
-// SQLite
-//#include "sqlite/sqlite3.h"
-#include <sqlite3.h>
-
-class WriteGeoModelAction : public GeoNodeAction  //## Inherits: <unnamed>%3FB0190202B6
-{
-	enum Type { TRANSFORM,
-		VOLUME,
-		NAMETAG,
-		IDENTIFIERTAG};
-
-public:
-
-	//## Constructors (specified)
-	//	Constructor for the print graph action.
-	WriteGeoModelAction (std::ostream &o,	// Constructor.  Takes an output stream.
-			MemMap& m, // and an unordered map.
-			sqlite3 *db = 0//
-	);
-	//## Destructor (generated)
-	virtual ~WriteGeoModelAction();
-
-    bool isOpen() const;
-
-
-	//## Other Operations (specified)
-
-	//	Handles a Transform.
-	virtual void handleTransform (const GeoTransform *xform);
-
-	//	Handles a physical volume.
-	virtual void handlePhysVol (const GeoPhysVol *vol);
-
-	//	Handles a physical volume.
-	virtual void handleFullPhysVol (const GeoFullPhysVol *vol);
-
-	//	Handles a Name Tag.
-	virtual void handleNameTag (const GeoNameTag *nameTag);
-
-	//	Handles a Serial Denominator.
-	virtual void handleSerialDenominator (const GeoSerialDenominator *sD);
-
-	//	Handles a Serial Transformer
-	virtual void handleSerialTransformer (const GeoSerialTransformer  *sT);
-
-	//	Handles an Identifier Tag.
-	virtual void handleIdentifierTag (const GeoIdentifierTag *idTag);
-
-	//	Sets the notification state.  Default: everything on.
-	void setNotification (Type type, bool state);
-
-	// Public SQLite DB methods
-	QSqlError fetchAllRecords();
-
-	QSqlError initDB();
-	QSqlError loadTestData();
-protected:
-
-private:
-	//## Constructors (generated)
-	WriteGeoModelAction(const WriteGeoModelAction &right);
-
-	//## Assignment Operation (generated)
-	WriteGeoModelAction & operator=(const WriteGeoModelAction &right);
-
-
-	//	Indent the print.
-	void indent ();
-
-
-	int storeObj(const GeoLogVol* pointer);
-	int storeObj(const GeoMaterial* pointer);
-	int storeObj(const GeoGraphNode* pointer);
-	int storeObj(const GeoShape* pointer);
-
-	int storeAddress(const std::string address);
-	void persistifyObj(const GeoPhysVol * pointer);
-
-	// Private SQLite DB methods
-//	static int callback(void *NotUsed, int argc, char **argv, char **azColName);
-//	void createTables();
-//	bool executeSQL(char const *sql);
-
-//	QSqlError openDB();
-//	void closeDB();
-
-
-	QVariant addPhysVol(QSqlQuery &q, const QVariant &logVolId, const QVariant &parentPhysVolId);
-	QVariant addLogVol(QSqlQuery &q, const QString &name, const QVariant &shapeId, const QVariant &materialId);
-	QVariant addMaterial(QSqlQuery &q, const QString &name);
-	QVariant addShape(QSqlQuery &q, const QString &name);
-
-
-
-	// Data Members for Class Attributes
-
-	//	A pointer to a name tag.  If the volume is named.
-	const GeoNameTag *m_nameTag;
-
-	//	A pointer to a serial denominator.  If one exists.
-	const GeoSerialDenominator *m_serialDenominator;
-
-	//	A pointer to an identifier tag.  If the volume is identified.
-	const GeoIdentifierTag *m_idTag;
-
-	//	List of Pending Transformations.
-	std::vector<const GeoTransform *>  m_pendingTransformList;
-
-	//	On/off flag for transforms.
-	bool m_transformState;
-
-	//	On/off flag for physical volumes.
-	bool m_volumeState;
-
-	//	On/off flag for name tags.
-	bool m_nametagState;
-
-	//	On/off flag for serial denominators.
-	bool m_serialDenominatorState;
-
-	//	On/off flag for serial transformers.
-	bool m_serialTransformerState;
-
-	//	On/off flag for identifier tags.
-	bool m_identifierState;
-
-	// output stream
-	std::ostream &m_o;
-
-	MemMap & m_map;
-
-//	sqlite3 * m_db;
-
-	QSqlDatabase m_db;
-//	QSqlDatabase* _db;
-
-	unsigned long int m_id; // store index of stored objects
-
-	int rc;
-	char const *sql;
-	char *zErrMsg = 0;
-	const char* data = "Callback function called";
-
-
-	//	Flag for indent (intially 0)
-	mutable bool m_indented;
-
-
-
-private: //## implementation
-
-};
-
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelAction.oldVersion b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelAction.oldVersion
deleted file mode 100644
index 338ff50cac792690713e1b12aa82a69a17152b44..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelAction.oldVersion
+++ /dev/null
@@ -1,1600 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-
-
-// local includes
-#include "GeoWrite/DumpGeoModelAction.h"
-
-// TFPersistification includes
-#include "TFPersistification/TransFunctionPersistifier.h"
-
-
-// GeoModelKernel includes
-#include "GeoModelKernel/GeoNodePath.h"
-#include "GeoModelKernel/GeoCountVolAction.h"
-// GeoModelKernel shapes
-#include "GeoModelKernel/GeoBox.h"
-#include "GeoModelKernel/GeoCons.h"
-#include "GeoModelKernel/GeoPara.h"
-#include "GeoModelKernel/GeoPcon.h"
-#include "GeoModelKernel/GeoPgon.h"
-#include "GeoModelKernel/GeoSimplePolygonBrep.h"
-#include "GeoModelKernel/GeoShapeShift.h"
-#include "GeoModelKernel/GeoTrap.h"
-#include "GeoModelKernel/GeoTrd.h"
-#include "GeoModelKernel/GeoTube.h"
-#include "GeoModelKernel/GeoTubs.h"
-
-// CLHEP includes
-#include "CLHEP/Geometry/Transform3D.h"
-#include "CLHEP/Matrix/SymMatrix.h"
-#include "CLHEP/Matrix/Matrix.h"
-
-
-
-// Qt includes
-#include <QSqlQuery>
-#include <QSqlError>
-#include <QSqlRecord>
-#include <QSqlDriver>
-#include <QVector>
-#include <QDebug>
-
-// C++ includes
-#include <sstream>
-
-
-
-int DumpGeoModelAction::getChildPosition(unsigned int parentId)
-{
-	if ( ! (m_parentChildrenMap.contains(parentId)) ) {
-		m_parentChildrenMap[parentId] = 0;
-	}
-	++m_parentChildrenMap[parentId];
-	return m_parentChildrenMap[parentId];
-}
-
-
-void DumpGeoModelAction::handlePhysVol (const GeoPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelAction::handlePhysVol(GeoPhysVol*)";
-	handleVPhysVolObjects( vol );
-}
-
-
-void DumpGeoModelAction::handleFullPhysVol (const GeoFullPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelAction::handleFullPhysVol( GeoFullPhysVol* )";
-	handleVPhysVolObjects( vol );
-}
-
-
-void DumpGeoModelAction::handleVPhysVolObjects(const GeoVPhysVol* vol)
-{
-	qDebug() << "\nDumpGeoModelAction::handleVPhysVolObjects( GeoVPhysVol* )";
-
-
-	// get the address string for the current volume
-	QString address = getAddressStringFromPointer( vol );
-
-	// variables used to persistify the object
-	QVariant parentId;
-	QVariant physId;
-
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "length: " << len;
-	//	std::cout << "path: " << path << std::endl;
-
-	const GeoVPhysVol* parentNode = nullptr;
-
-	// this below is performed until the root volume is found, then "length" is not used anymore,
-	// because not updated when recursively visiting PhysVols
-	bool getParentNode = true;
-	bool storeRootVolume = false;
-	if ( ! m_rootVolumeFound) {
-		if (len > 1) {
-			getParentNode = true;
-		} else{
-			qDebug() << "This is the Root volume!";
-			m_rootVolumeFound = true;
-			storeRootVolume = true;
-			getParentNode = false;
-		}
-	} else {
-		getParentNode = true;
-	}
-
-	// get the parent volume, if this is not the Root volume
-	if (getParentNode) {
-
-		parentNode = dynamic_cast<const GeoVPhysVol*>( &(*(vol->getParent() )));
-
-		if (parentNode) {
-			QString parentAddress = getAddressStringFromPointer(parentNode);
-			qDebug() << "parent's address:" << parentNode;
-
-			if (isAddressStored(parentAddress))
-				parentId = getStoredIdFromAddress(parentAddress);
-			//		else
-			//			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-			qDebug() << "parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-		}
-		else {
-			qDebug() << "NULL parent node!!";
-		}
-	}
-
-	// counting children
-	unsigned int nChildren = vol->getNChildVols();
-	qDebug() << "number of child physical volumes:" << nChildren;
-	qDebug() << "[number of PhysVol and SerialTransformer child nodes:" << vol->getNChildVolAndST() << "]";
-
-	//// for debug
-	// GeoCountVolAction cv;
-	// cv.setDepthLimit(1);
-	// vol->exec(&cv);
-	// int nChildCount = cv.getCount();
-	// qDebug() << "number of child volumes:" << nChildCount;
-
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		/*
-		 * VPhysVol features:
-		 * - 1 parent VPhysVol (if any)
-		 * - 1 LogVol
-		 * - 1 Material
-		 * - 1 Shape
-		 */
-
-		// Note: PhysVol has no name. Its LogVol has a name.
-		//	  const std::string name = vol->getLogVol()->getName();
-
-		// LOGVOL
-		const GeoLogVol* logVol = vol->getLogVol();
-		const QString logName = QString::fromStdString(logVol->getName());
-		qDebug() << "LogVol name:"  << logName;
-
-
-		// MATERIAL
-		const GeoMaterial * mat = vol->getLogVol()->getMaterial();
-		const QString matName = QString::fromStdString(mat->getName());
-		qDebug() << "material name:" << matName << ", address:" << mat;
-
-
-		// SHAPE
-		const GeoShape * shape = vol->getLogVol()->getShape();
-		// const QString shapeType = QString::fromStdString(shape->type());
-		// qDebug() << "shape name:" << shapeType  << ", address:" << shape;
-		// // get shape parameters
-		// QString shapePars = getShapeParameters(shape);
-
-
-		/*
-		 * STORE THE OBJECTS IN THE DB
-		 */
-
-		// store/get the Material object into/from the DB
-		QVariant matId;
-		matId = storeObj(mat, matName);
-
-		// store/get the Shape object into/from the DB
-		QVariant shapeId;
-		shapeId = storeShape(shape);
-		// shapeId = storeObj(shape, shapeType, shapePars);
-
-		// store/get the LogVol object into/from the DB
-		QVariant logvolId;
-		logvolId = storeObj(logVol, logName, shapeId, matId);
-
-		if (dynamic_cast<const GeoPhysVol*>(vol)) {
-			qDebug() << "New PhysVol, storing it...";
-			const GeoPhysVol* physVol = dynamic_cast<const GeoPhysVol*>(vol);
-			// store the PhysVol volume into the DB
-			physId = storeObj(physVol, logvolId, parentId, storeRootVolume); // with parent info
-			qDebug() << "PhysVol stored. Id:" << physId.toString();
-		}
-		else if (dynamic_cast<const GeoFullPhysVol*>(vol)) {
-			qDebug() << "New FullPhysVol, storing it...";
-			const GeoFullPhysVol* fullVol = dynamic_cast<const GeoFullPhysVol*>(vol);
-			// store the FullPhysVol volume into the DB
-			physId = storeObj(fullVol, logvolId, parentId, storeRootVolume); // with parent info
-			qDebug() << "FullPhysVol stored. Id:" << physId.toString();
-		} else {
-			qWarning() << "WARNING!! Unknown GeoVPhysVol type!!";
-		}
-
-	} else {
-		//	qDebug() << "Volume stored already. It is a shared volume. Taking ID from memory map and moving to its physical children...";
-		qDebug() << "Volume stored already. It is a shared volume. Taking ID from memory map...";
-		physId = getStoredIdFromAddress(address);
-		qDebug() << "PhysVol Id:" << physId;
-	}
-
-
-	// store the parent-child relationship in the DB
-
-	QString parentType;
-	if (parentNode) parentType = getGeoTypeFromVPhysVol(parentNode);
-	else parentType = "NULL";
-	QString childType  = getGeoTypeFromVPhysVol(vol);
-	storeChildPosition(parentId, parentType, physId, getChildPosition( parentId.toUInt() ), childType);
-
-}
-
-
-QString DumpGeoModelAction::getGeoTypeFromVPhysVol(const GeoVPhysVol* vol)
-{
-	QString geoType;
-	if (dynamic_cast<const GeoPhysVol*>(vol)) {
-		qDebug() << "GeoType: GeoPhysVol";
-		geoType = "GeoPhysVol";
-	}
-	else if (dynamic_cast<const GeoFullPhysVol*>(vol)) {
-		qDebug() << "GeoType: GeoFullPhysVol";
-		geoType = "GeoFullPhysVol";
-	} else {
-		qWarning() << "WARNING!! Unknown GeoVPhysVol type!!";
-	}
-	return geoType;
-}
-
-
-void DumpGeoModelAction::handleSerialDenominator (const GeoSerialDenominator *node)
-{
-	qDebug() << "\nDumpGeoModelAction::handleSerialDenominator(GeoSerialDenominator*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-
-	std::string baseNameStr = node->getBaseName();
-	QString baseName = QString::fromStdString(baseNameStr);
-	qDebug() << "base name:" << baseName << "address:" << address;
-
-	// TODO: check if needed!
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "length: " << len;
-
-	// reset the number of visited node, if len is different than before
-	if (len != m_len) {
-		m_len_nChild = 0;
-		m_len = len;
-	}
-	// update number of visited nodes if len is the same as before
-	else {
-		++m_len_nChild;
-	}
-
-	// variables used to persistify the object
-	QVariant parentId;
-	QVariant sdId;
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = nullptr;
-	if (len > 1) { // TODO: check if needed!
-		parentNode = path->getItem(len-1); // i=(len-1) gives you the parent VPhysVol
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		else
-			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-		qDebug() << "- parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	} else{ // TODO: check if needed!
-		qWarning() << "ERROR!! Len == 1, but this cannot be the Root volume!";
-	}
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New SerialDenominator, storing it...";
-
-
-		/*
-		 * STORE THE OBJECT IN THE DB
-		 */
-
-		// store the Material object in the DB
-		sdId = storeObj(node, baseName);
-		qDebug() << "SerialDenominator stored. Id:" << sdId.toString();
-
-	} else {
-		sdId = getStoredIdFromAddress(address);
-		qDebug() << "SerialDenominator already stored in the DB. Id:" << sdId.toString();
-	}
-
-	QString parentType;
-	if (parentNode) parentType = getGeoTypeFromVPhysVol(parentNode);
-	else parentType = "NULL";
-	storeChildPosition(parentId, parentType, sdId, getChildPosition( parentId.toUInt() ), "GeoSerialDenominator");
-
-}
-
-
-
-void DumpGeoModelAction::handleSerialTransformer (const GeoSerialTransformer *node)
-{
-	qDebug() << "\nDumpGeoModelAction::handleSerialTransformer(GeoSerialTransformer*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "path length: " << len;
-
-	// reset the number of visited node, if len is different than before
-	if (len > m_len) {
-		m_len_nChild = 0;
-		m_len = len;
-	}
-	// update number of visited nodes if len is the same as before
-	else {
-		++m_len_nChild;
-	}
-
-
-	// variables used to persistify the object
-	QVariant parentId;
-	QVariant functionId;
-	QVariant physvolId;
-	QVariant physvolTable;
-	unsigned int nCopies;
-	QVariant stId;
-
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = nullptr;
-	if (len > 1) {
-		parentNode = path->getItem(len-1); // i=(len-1) gives you the parent VPhysVol
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		else
-			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-		qDebug() << "- parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	} else{
-		qWarning() << "ERROR!! Len == 1, but this cannot be the Root volume!";
-	}
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New SerialTransformer, storing it...";
-
-		/*
-		 * Get Node characteristics
-		 *
-		 * SerialTransformer features:
-		 * - 1 parent PhysVol (if any)
-		 * - 1 GENFUNCTION
-		 * - 1 PhysVolId
-		 * - 1 PhysVolType
-		 * - 1 number of copies
-		 */
-		// get linked function and number of copies
-		const GeoXF::Function * func = node->getFunction();
-		nCopies =  node->getNCopies();
-		qDebug() << "n. of copies:" << QString::number(nCopies);
-
-		// get linked VPhysVol volume
-		const GeoVPhysVol *vol = &( *( node->getVolume() ) );
-		// const GeoPhysVol* vol = dynamic_cast<const GeoPhysVol*>(volV);
-		QString volType;
-		if (dynamic_cast<const GeoPhysVol*>(vol))
-			volType = "GeoPhysVol";
-		else if (dynamic_cast<const GeoFullPhysVol*>(vol))
-			volType = "GeoFullPhysVol";
-		else
-			qWarning() << "ERROR!!! Unknown VPhysVol type!!";
-
-		/*
-		 * Persistify the Function
-		 */
-	 	TransFunctionPersistifier persistifier;
-        try {
-            persistifier.persistify(*func);
-        } catch (const std::runtime_error & error) {
-            std::cout << "Handling TransFunctionPersistifier std::runtime_error! -->" << error.what() << std::endl;
-            std::cout << "SEVERE WARNING!! Handling std::runtime_error! -->" << error.what() << std::endl;
-        }
-		QString expression = QString::fromStdString( persistifier.getCodedString() );
-		qDebug() << "FUNCTION:" << expression;
-
-		if (expression.size() == 0) {
-				qFatal("FATAL ERROR!! Function expression is empty!! Aborting...");
-				abort();
-		}
-
-
-		/*
-		 * STORE/GET THE INNER OBJECTS IN THE DB
-		 */
-
-		// store/get the Function object in the DB
-		functionId = storeObj(func, expression);
-
-		// store/get the PhysVol volume in the DB
-
-		/* Concerning the physVol referenced by the SerialTransformer:
-		 *
-		 * - if physvol is not stored in the DB already;
-		 * - if physVol has no parent (==NULL)
-		 * ==> it means that its children will never visited by the NodeAction executed on the root tree
-		 *
-		 * ==> So, we need to persitify it as a new tree, to get all its children visited and persistified
-		 *
-		 */
-		handleReferencedPhysVol(vol);
-
-		QString physvolAddress = getAddressStringFromPointer(vol);
-		physvolId = getStoredIdFromAddress(physvolAddress);
-
-
-		/*
-		 * STORE THE NODE INTO THE DB
-		 */
-		// store the SerialTransformer volume in the DB
-		stId = storeObj(node, functionId, physvolId, volType, nCopies);
-		qDebug() << "SerialTransformer stored. Id:" << stId.toString();
-
-	} else {
-		stId = getStoredIdFromAddress(address);
-		qDebug() << "SerialTransformer already stored in the DB. Id:" << stId.toString();
-	}
-
-	QString parentType;
-	if (parentNode) parentType = getGeoTypeFromVPhysVol(parentNode);
-	else parentType = "NULL";
-	storeChildPosition(parentId, parentType, stId, getChildPosition( parentId.toUInt() ), "GeoSerialTransformer");
-
-}
-
-
-
-
-void DumpGeoModelAction::handleTransform(const GeoTransform* node)
-{
-	qDebug() << "\nDumpGeoModelAction::handleTransform(GeoTransform*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "length: " << len;
-
-	// reset the number of visited node, if len is different than before
-	if (len > m_len) {
-		m_len_nChild = 0;
-		m_len = len;
-	}
-	// update number of visited nodes if len is the same as before
-	else {
-		++m_len_nChild;
-	}
-
-
-	QVariant trId;
-	QVariant parentId;
-
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = nullptr;
-	if (len > 1) {
-		parentNode = path->getItem(len-1); // i=(len-1) gives you the parent VPhysVol
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		else {
-			// qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-			qWarning() << "The parent node of this transform seems to not having be stored in the DB yet. [It is normal if the transformation is used for example only in the definition of a 'GeoShapeShift' instance]";
-		}
-		qDebug() << "- parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	} else{
-		qWarning() << "ERROR!! Len == 1, but this cannot be the Root volume!";
-	}
-
-	/*
-	 * STORE THE OBJECT IN THE DB AND ITS PLACE WITHIN THE TREE
-	 */
-
-	 // store the transformation in the DB
-	 trId = storeTranform(node);
-
-
-	// Store the child-parent relationship
-	QString parentType;
-	if (parentNode) parentType = getGeoTypeFromVPhysVol(parentNode);
-	else parentType = "NULL";
-	if ( dynamic_cast<const GeoAlignableTransform*>(node) ) {
-		qDebug() << "Storing a GeoAlignableTransform...";
-		storeChildPosition(parentId, parentType, trId, getChildPosition( parentId.toUInt() ), "GeoAlignableTransform");
-	}
-	else if ( dynamic_cast<const GeoTransform*>(node) ) {
-		qDebug() << "Storing a GeoTransform...";
-		storeChildPosition(parentId, parentType, trId, getChildPosition( parentId.toUInt() ), "GeoTransform");
-	}
-	else {
-		qWarning("Not implemented yet!!!! ");
-	}
-
-}
-
-
-void DumpGeoModelAction::handleNameTag(const GeoNameTag* node)
-{
-	qDebug() << "\nDumpGeoModelAction::handleNameTag(GeoNameTag*)";
-
-	std::string nameStr = node->getName();
-	QString name = QString::fromStdString(nameStr);
-	qDebug() << "name:" << name;
-
-	QString address = getAddressStringFromPointer( node );
-
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "length: " << len;
-
-	// reset the number of visited node, if len is different than before
-	if (len > m_len) {
-		m_len_nChild = 0;
-		m_len = len;
-	}
-	// update number of visited nodes if len is the same as before
-	else {
-		++m_len_nChild;
-	}
-
-
-	QVariant nameId;
-	QVariant parentId;
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = nullptr;
-	if (len > 1) {
-		parentNode = path->getItem(len-1); // i=(len-1) gives you the parent VPhysVol
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		else {
-			// qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-			qWarning() << "The parent node of this transform seems to not having be stored in the DB yet. [It is normal if the transformation is used for example only in the definition of a 'GeoShapeShift' instance]";
-		}
-		qDebug() << "- parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	} else{
-		qWarning() << "ERROR!! Len == 1, but this cannot be the Root volume!";
-	}
-
-	/*
-	 * STORE THE OBJECT IN THE DB AND ITS PLACE WITHIN THE TREE
-	 */
-
-	 // store the name tag in the DB
-	 nameId = storeObj(node, name);
-
-	// Store the child-parent relationship
-	QString parentType;
-	if (parentNode) parentType = getGeoTypeFromVPhysVol(parentNode);
-	else parentType = "NULL";
-	storeChildPosition(parentId, parentType, nameId, getChildPosition( parentId.toUInt() ), "GeoNameTag");
-
-}
-
-QVariant DumpGeoModelAction::storeShape(const GeoShape* shape){
-	const QString shapeType = QString::fromStdString(shape->type());
-	qDebug() << "shape name:" << shapeType  << ", address:" << shape;
-	// get shape parameters
-	QString shapePars = getShapeParameters(shape);
-	// store the shape in the DB and returns the ID
-	return storeObj(shape, shapeType, shapePars);
-}
-
-QVariant DumpGeoModelAction::storeTranform(const GeoTransform* node){
-	/*
-	 * STORE THE OBJECT IN THE DB
-	 */
-
-	 QString address = getAddressStringFromPointer( node );
-
-	 QVariant trId;
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New Transform, storing it...";
-
-
-		HepGeom::Transform3D tr = node->getTransform();
-
-		std::vector<double> params = getTransformParameters(tr);
-		qDebug() << "Transform parameters:" << QVector<double>::fromStdVector(params);
-
-		/*
-		 * STORE THE OBJECT IN THE DB
-		 */
-
-		// store the object in the DB
-		if ( dynamic_cast<const GeoAlignableTransform*>(node) ) {
-			trId = storeObj(dynamic_cast<const GeoAlignableTransform*>(node), params);
-			qDebug() << "AlignableTransform stored. Id:" << trId.toString();
-		}
-		else if ( dynamic_cast<const GeoTransform*>(node) ) {
-			trId = storeObj(dynamic_cast<const GeoTransform*>(node), params);
-			qDebug() << "Transform stored. Id:" << trId.toString();
-		}
-		else {
-			qDebug() << "WARNING!!! - This type of transformation needs to be customized yet!!";
-		}
-
-	} else {
-		trId = getStoredIdFromAddress(address);
-		qDebug() << "Transform already stored in the DB. Id:" << trId.toString();
-	}
-
-	return trId;
-}
-
-
-void DumpGeoModelAction::handleReferencedPhysVol (const GeoVPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelAction::handleReferencedPhysVol(GeoVPhysVol*)";
-
-	// qDebug() << "PhysVol's LogVol name:" << QString::fromStdString(vol->getLogVol()->getName());
-
-	// get the address string for the current volume
-	QString address = getAddressStringFromPointer( vol );
-
-	QVariant parentId;
-	bool unconnectedTree = false;
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = dynamic_cast<const GeoVPhysVol*>( &(*(vol->getParent() )));
-
-	if (parentNode) {
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		//		else
-		//			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-		qDebug() << "parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	}
-	else {
-		qDebug() << "NULL parent node!!";
-		unconnectedTree = true;
-	}
-
-	// // counting children
-	// unsigned int nChildren = vol->getNChildVols();
-	// qDebug() << "number of child physical volumes:" << nChildren;
-	// qDebug() << "[number of PhysVol and SerialTransformer child nodes:" << vol->getNChildVolAndST() << "]";
-	//
-	// GeoCountVolAction cv;
-	// cv.setDepthLimit(1);
-	// vol->exec(&cv);
-	// int nChildCount = cv.getCount();
-	// qDebug() << "number of child volumes:" << nChildCount;
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "This is a new root PhysVol node of an 'unconnected' tree, so we start another action on it to dump it into the DB...";
-
-		// Dump tree volumes into a DB
-			vol->exec(this); // TODO: check if the new action overwrites the id of the volumes already in the DB...!!!
-	}
-}
-
-
-// Get shape parameters
-QString DumpGeoModelAction::getShapeParameters(const GeoShape* shape)
-{
-	const QString shapeType = QString::fromStdString(shape->type());
-	qDebug() << "shapeType:" << shapeType;
-
-	QString shapePars = "";
-
-	if (shapeType == "Box") {
-		qDebug() << "get GeoBox parameters";
-		QStringList pars;
-		const GeoBox* box = dynamic_cast<const GeoBox*>(shape);
-		pars << "XHalfLength=" + QString::number(box->getXHalfLength()) ;
-		pars << "YHalfLength=" + QString::number(box->getYHalfLength()) ;
-		pars << "ZHalfLength=" + QString::number(box->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Tube") {
-		QStringList pars;
-		const GeoTube* tube = dynamic_cast<const GeoTube*>(shape);
-		pars << "RMin=" + QString::number(tube->getRMin()) ;
-		pars << "RMax=" + QString::number(tube->getRMax()) ;
-		pars << "ZHalfLength=" + QString::number(tube->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Cons") {
-		QStringList pars;
-		const GeoCons* shapeIn = dynamic_cast<const GeoCons*>(shape);
-		pars << "RMin1=" + QString::number(shapeIn->getRMin1()) ;
-		pars << "RMin2=" + QString::number(shapeIn->getRMin2()) ;
-		pars << "RMax1=" + QString::number(shapeIn->getRMax1()) ;
-		pars << "RMax2=" + QString::number(shapeIn->getRMax2()) ;
-		pars << "DZ=" + QString::number(shapeIn->getDZ()) ;
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Para") {
-		QStringList pars;
-		const GeoPara* shapeIn = dynamic_cast<const GeoPara*>(shape);
-		pars << "XHalfLength=" + QString::number(shapeIn->getXHalfLength()) ;
-		pars << "YHalfLength=" + QString::number(shapeIn->getYHalfLength()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "Alpha=" + QString::number(shapeIn->getAlpha()) ;
-		pars << "Theta=" + QString::number(shapeIn->getTheta()) ;
-		pars << "Phi=" + QString::number(shapeIn->getPhi()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Pcon") {
-		QStringList pars;
-		const GeoPcon* shapeIn = dynamic_cast<const GeoPcon*>(shape);
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Pgon") {
-		QStringList pars;
-		const GeoPgon* shapeIn = dynamic_cast<const GeoPgon*>(shape);
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		pars << "NSides=" + QString::number(shapeIn->getNSides()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "SimplePolygonBrep") {
-		QStringList pars;
-		const GeoSimplePolygonBrep* shapeIn = dynamic_cast<const GeoSimplePolygonBrep*>(shape);
-		pars << "DZ=" + QString::number(shapeIn->getDZ()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Trap") {
-		QStringList pars;
-		const GeoTrap* shapeIn = dynamic_cast<const GeoTrap*>(shape);
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "Theta=" + QString::number(shapeIn->getTheta()) ;
-		pars << "Phi=" + QString::number(shapeIn->getPhi()) ;
-		pars << "Dydzn=" + QString::number(shapeIn->getDydzn()) ;
-		pars << "Dxdyndzn=" + QString::number(shapeIn->getDxdyndzn()) ;
-		pars << "Dxdypdzn=" + QString::number(shapeIn->getDxdypdzn()) ;
-		pars << "Angleydzn=" + QString::number(shapeIn->getAngleydzn()) ;
-		pars << "Dydzp=" + QString::number(shapeIn->getDydzp()) ;
-		pars << "Dxdyndzp=" + QString::number(shapeIn->getDxdyndzp()) ;
-		pars << "Dxdypdzp=" + QString::number(shapeIn->getDxdypdzp()) ;
-		pars << "Angleydzp=" + QString::number(shapeIn->getAngleydzp()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Trd") {
-		QStringList pars;
-		const GeoTrd* shapeIn = dynamic_cast<const GeoTrd*>(shape);
-		pars << "XHalfLength1=" + QString::number(shapeIn->getXHalfLength1()) ;
-		pars << "XHalfLength2=" + QString::number(shapeIn->getXHalfLength2()) ;
-		pars << "YHalfLength1=" + QString::number(shapeIn->getYHalfLength1()) ;
-		pars << "YHalfLength2=" + QString::number(shapeIn->getYHalfLength2()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Tubs") {
-		QStringList pars;
-		const GeoTubs* shapeIn = dynamic_cast<const GeoTubs*>(shape);
-		pars << "RMin=" + QString::number(shapeIn->getRMin()) ;
-		pars << "RMax=" + QString::number(shapeIn->getRMax()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType == "Shift") {
-		qDebug() << "get GeoShapeShift parameters";
-		QStringList pars;
-		const GeoShapeShift* shapeIn = dynamic_cast<const GeoShapeShift*>(shape);
-
-		// get the pointed Shape, store it in the DB
-		const GeoShape* shapeOp = shapeIn->getOp();
-		QVariant shapeId = storeShape(shapeOp);
-
-		// get the Transformation, store it in the DB
-		const HepGeom::Transform3D transfX = shapeIn->getX();
-		GeoTransform* transf = new GeoTransform(transfX);
-		QVariant trId = storeTranform(transf);
-
-		pars << "A=" + QString::number( shapeId.toUInt() ) ;
-		pars << "X=" + QString::number( trId.toUInt() ) ;
-		shapePars = pars.join(";");
-	}
-	else {
-		qDebug() << "WARNING!!! - Shape '" << shapeType << "' needs to be customized!!";
-	}
-
-  return shapePars;
-
-}
-
-
-std::vector<double> DumpGeoModelAction::getTransformParameters(HepGeom::Transform3D tr)
-{
-	std::vector<double> vec;
-
-	vec.push_back(tr.xx());
-	vec.push_back(tr.xy());
-	vec.push_back(tr.xz());
-
-	vec.push_back(tr.yx());
-	vec.push_back(tr.yy());
-	vec.push_back(tr.yz());
-
-	vec.push_back(tr.zx());
-	vec.push_back(tr.zy());
-	vec.push_back(tr.zz());
-
-	vec.push_back(tr.dx());
-	vec.push_back(tr.dy());
-	vec.push_back(tr.dz());
-
-	return vec;
-}
-
-
-DumpGeoModelAction::DumpGeoModelAction(GMDBManager &db)
-{
-	qDebug() << "DumpGeoModelAction: constructor";
-
-	// init variables
-	m_len = 0;
-	m_len_nChild = 0;
-	m_rootVolumeFound = false;
-
-	// init anche check the database handle
-	m_dbManager = &db;
-	if (m_dbManager->isOpen()) {
-		qDebug() << "OK! Database is open!";
-	}
-	else {
-		qDebug() << "Database is not open!";
-	}
-
-	// QString pippo = "pippo";
-
-}
-
-DumpGeoModelAction::~DumpGeoModelAction()
-{
-	// nothing to do so far...
-}
-
-
-void DumpGeoModelAction::showMemoryMap()
-{
-	qDebug() << "DumpGeoModelAction::showMemoryMap()";
-
-	QMap<QString, QVariant>::const_iterator it = m_memMap.constBegin();
-	while (it != m_memMap.constEnd()) {
-		std::cout << it.key().toStdString() << ": " << it.value().toString().toStdString() << std::endl;
-		++it;
-	}
-}
-
-
-
-QVariant DumpGeoModelAction::storeObj(const GeoMaterial* pointer, const QString name)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoMaterial*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant materialId;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New Material! Storing it...";
-
-		materialId = m_dbManager->addMaterial(name);
-		materialId = m_dbManager->addMaterial(name);
-
-		storeAddress( address, materialId );
-	}
-	else {
-		qDebug() << "Material node stored already. Getting ID from the memory map...";
-		materialId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "materialId:" << materialId;
-	return materialId;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoShape* pointer, const QString name, const QString parameters)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoShape*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant shapeId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New Shape! Storing it...";
-		shapeId = m_dbManager->addShape(name, parameters);
-		storeAddress( address, shapeId);
-	}
-	else {
-		qDebug() << "Shape node stored already. Getting ID from the memory map...";
-		shapeId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "shapeId:" << shapeId;
-	return shapeId;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoLogVol* pointer, const QString name, const QVariant shapeId, const QVariant materialId)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoLogVol*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant logvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New LogVol! Storing it...";
-		logvolId = m_dbManager->addLogVol(name, shapeId, materialId);
-		storeAddress( address, logvolId );
-	}
-	else {
-		qDebug() << "LogVol node stored already. Getting ID from the memory map...";
-		logvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "logvolId:" << logvolId;
-	return logvolId;
-}
-
-
-QVariant DumpGeoModelAction::storeObj(const GeoPhysVol* pointer, const QVariant logvolId, const QVariant parentId, bool isRootVolume)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoPhysVol*) - address:" << pointer << "- is root volume?" << isRootVolume;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant physvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New PhysVol! Storing it...";
-		physvolId = m_dbManager->addPhysVol(logvolId, parentId, isRootVolume);
-		storeAddress( address, physvolId );
-	}
-	else {
-		qDebug() << "PhysVol node stored already. Getting ID from the memory map...";
-		physvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "physvolId:" << physvolId;
-	return physvolId;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoFullPhysVol* pointer, const QVariant logvolId, const QVariant parentId, bool isRootVolume)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoFullPhysVol*) - address:" << pointer << "- is root volume?" << isRootVolume;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant physvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New FullPhysVol! Storing it...";
-		physvolId = m_dbManager->addFullPhysVol(logvolId, parentId, isRootVolume);
-		storeAddress( address, physvolId );
-	}
-	else {
-		qDebug() << "FullPhysVol node stored already. Getting ID from the memory map...";
-		physvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "fullphysvolId:" << physvolId;
-	return physvolId;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoSerialDenominator* pointer, const QString baseName)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoSerialDenominator*) - baseName:" << baseName << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialDenominator! Storing it...";
-		id = m_dbManager->addSerialDenominator(baseName);
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialDenominator node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-
-QVariant DumpGeoModelAction::storeObj(const GeoSerialTransformer* pointer, const QVariant functionId, const QVariant volId, const QString volType, const unsigned int copies)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoSerialTransformer*):" << volId << volType << "- n. of copies: " << copies;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialTransformer! Storing it...";
-		id = m_dbManager->addSerialTransformer(functionId, volId, volType, copies);
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialTransformer node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoXF::Function* pointer, const QString expression)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoXF::Function*)";
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-		id = m_dbManager->addFunction(expression);
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoXF::Function node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoTransform* pointer, std::vector<double> parameters)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoTransform*)";
-
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-
-		id = m_dbManager->addTransform( QVector<double>::fromStdVector(parameters) );
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoTransform node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelAction::storeObj(const GeoAlignableTransform* pointer, std::vector<double> parameters)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoAlignableTransform*)";
-
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-
-		id = m_dbManager->addAlignableTransform( QVector<double>::fromStdVector(parameters) );
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoAlignableTransform node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-
-QVariant DumpGeoModelAction::storeObj(const GeoNameTag* pointer, const QString name)
-{
-	qDebug() << "DumpGeoModelAction::storeObj(GeoNameTag*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialDenominator! Storing it...";
-		id = m_dbManager->addNameTag(name);
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialDenominator node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-
-void DumpGeoModelAction::storeChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int childPos, const QString childType)
-{
-	qDebug() << "DumpGeoModelAction::storeChildPosition()";
-
-	m_dbManager->addChildPosition(parentId, parentType, childId, childPos, childType);
-	return;
-
-}
-
-
-void DumpGeoModelAction::storeAddress(const QString address, QVariant id)
-{
-	qDebug() << "DumpGeoModelAction::storeAddress(" << address << "," << id << ")";
-	m_memMap.insert(address, id);
-}
-
-bool DumpGeoModelAction::isAddressStored(const QString address)
-{
-	qDebug() << "DumpGeoModelAction::isAddressStored(): " << address;
-	//showMemoryMap(); // only for Debug
-	return m_memMap.contains(address);
-}
-
-
-QVariant DumpGeoModelAction::getStoredIdFromAddress(QString address)
-{
-	qDebug() << "DumpGeoModelAction::getStoredIdFromAddress(): " << address;
-	return m_memMap.value(address);
-}
-
-// get pointer string
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoMaterial* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoMaterial*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoShape* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoShape*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoLogVol* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoLogVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoPhysVol* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoPhysVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoVPhysVol* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoVPhysVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoSerialDenominator* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoSerialDenominator*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoSerialTransformer* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoSerialTransformer*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoXF::Function* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoXF::Function*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoTransform* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoTransform*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelAction::getAddressStringFromPointer(const GeoNameTag* pointer)
-{
-	qDebug() << "DumpGeoModelAction::getAddressStringFromPointer(GeoNameTag*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelAction::getQStringFromOss(std::ostringstream &oss)
-{
-	qDebug() << "DumpGeoModelAction::getQStringFromOss()";
-	std::string addr = oss.str();
-	QString address = QString::fromStdString(addr);
-	qDebug() << "address string:" << address;
-	return address;
-}
-
-
-//bool DumpGeoModelAction::isObjectStored(const GeoMaterial* pointer)
-//{
-//	qDebug() << "DumpGeoModelAction::isObjectStored(const GeoMaterial*)";
-//	return isAddressStored(getAddressStringFromPointer( pointer) );
-//}
-//
-//bool DumpGeoModelAction::isObjectStored(const GeoGraphNode* pointer)
-//{
-//	qDebug() << "DumpGeoModelAction::isObjectStored(const GeoGraphNode*)";
-////	return isAddressStored(address);
-//}
-
-
-
-// void DumpGeoModelAction::handlePhysVol (const GeoPhysVol *vol)
-// {
-// 	qDebug() << "\nDumpGeoModelAction::handlePhysVol(GeoPhysVol*)";
-//
-// 	// get the address string for the current volume
-// 	QString address = getAddressStringFromPointer( vol );
-//
-// 	// variables used to persistify the object
-// 	QVariant parentId;
-// 	QVariant physId;
-//
-// 	// check the volume position in the geometry tree
-// 	GeoNodePath* path = getPath();
-// 	unsigned int len = path->getLength();
-// 	qDebug() << "length: " << len;
-// 	//	std::cout << "path: " << path << std::endl;
-//
-// //	const GeoVPhysVol* parentNode;
-//
-// 	// this below is performed until the root volume is found, then "length" is not used anymore,
-// 	// because not updated when recursively visiting PhysVols
-// 	bool getParentNode = true;
-// 	bool storeRootVolume = false;
-// 	if ( ! m_rootVolumeFound) {
-// 		if (len > 1) {
-// 			getParentNode = true;
-// 		} else{
-// 			qDebug() << "This is the Root volume!";
-// 			m_rootVolumeFound = true;
-// 			storeRootVolume = true;
-// 			getParentNode = false;
-// 		}
-// 	} else {
-// 		getParentNode = true;
-// 	}
-//
-// 	// get the parent volume, if this is not the Root volume
-// 	if (getParentNode) {
-//
-// 		const GeoPhysVol* parentNode = dynamic_cast<const GeoPhysVol*>( &(*(vol->getParent() )));
-//
-// 		if (parentNode) {
-// 			QString parentAddress = getAddressStringFromPointer(parentNode);
-// 			qDebug() << "parent's address:" << parentNode;
-//
-// 			if (isAddressStored(parentAddress))
-// 				parentId = getStoredIdFromAddress(parentAddress);
-// 			//		else
-// 			//			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-//
-// 			qDebug() << "parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-// 		}
-// 		else {
-// 			qDebug() << "NULL parent node!!";
-// 		}
-// 	}
-//
-// 	// counting children
-// 	unsigned int nChildren = vol->getNChildVols();
-// 	qDebug() << "number of child physical volumes:" << nChildren;
-// 	qDebug() << "[number of PhysVol and SerialTransformer child nodes:" << vol->getNChildVolAndST() << "]";
-//
-// 	GeoCountVolAction cv;
-// 	cv.setDepthLimit(1);
-// 	vol->exec(&cv);
-// 	int nChildCount = cv.getCount();
-// 	qDebug() << "number of child volumes:" << nChildCount;
-//
-//
-//
-// 	// check if this object has been stored already
-// 	if (! isAddressStored(address)) {
-//
-// 		qDebug() << "New PhysVol, storing it...";
-//
-// 		/*
-// 		 * PhysVol features:
-// 		 * - 1 parent PhysVol (if any)
-// 		 * - 1 LogVol
-// 		 * - 1 Material
-// 		 * - 1 Shape
-// 		 */
-//
-// 		// Note: PhysVol has no name. Its LogVol has a name.
-// 		//	  const std::string name = vol->getLogVol()->getName();
-//
-// 		// LOGVOL
-// 		const GeoLogVol* logVol = vol->getLogVol();
-// 		const QString logName = QString::fromStdString(logVol->getName());
-// 		qDebug() << "LogVol name:"  << logName;
-//
-//
-// 		// MATERIAL
-// 		const GeoMaterial * mat = vol->getLogVol()->getMaterial();
-// 		const QString matName = QString::fromStdString(mat->getName());
-// 		qDebug() << "material name:" << matName << ", address:" << mat;
-//
-//
-// 		// SHAPE
-// 		const GeoShape * shape = vol->getLogVol()->getShape();
-// 		const QString shapeType = QString::fromStdString(shape->type());
-// 		qDebug() << "shape name:" << shapeType  << ", address:" << shape;
-//
-// 		// shape parameters
-// 		QString shapePars = "";
-// 		if (shapeType == "Box") {
-// 			QStringList pars;
-// 			const GeoBox* box = dynamic_cast<const GeoBox*>(shape);
-// 			pars << "XHalfLength=" + QString::number(box->getXHalfLength()) ;
-// 			pars << "YHalfLength=" + QString::number(box->getYHalfLength()) ;
-// 			pars << "ZHalfLength=" + QString::number(box->getZHalfLength()) ;
-// 			shapePars = pars.join(";");
-// 		}
-//
-// 		/*
-// 		 * STORE THE OBJECTS IN THE DB
-// 		 */
-//
-// 		// store/get the Material object into/from the DB
-// 		QVariant matId;
-// 		matId = storeObj(mat, matName);
-//
-// 		// store/get the Shape object into/from the DB
-// 		QVariant shapeId;
-// 		shapeId = storeObj(shape, shapeType, shapePars);
-//
-// 		// store/get the LogVol object into/from the DB
-// 		QVariant logvolId;
-// 		logvolId = storeObj(logVol, logName, shapeId, matId);
-//
-// 		// store the PhysVol volume into the DB
-// 		physId = storeObj(vol, logvolId, parentId, storeRootVolume); // with parent info
-// 		qDebug() << "PhysVol stored. Id:" << physId.toString();
-//
-// 	} else {
-// 		//	qDebug() << "Volume stored already. It is a shared volume. Taking ID from memory map and moving to its physical children...";
-// 		qDebug() << "Volume stored already. It is a shared volume. Taking ID from memory map...";
-// 		physId = getStoredIdFromAddress(address);
-// 		qDebug() << "PhysVol Id:" << physId;
-// 	}
-//
-//
-// 	// store the parent-child relationship in the DB
-// 	storeChildPosition(parentId, physId, getChildPosition( parentId.toUInt() ), "GeoPhysVol");
-//
-
-	/* Now we need to loop over children, to be sure all volumes are take.
-	 That's because it seems that the action only goes to children that are 'attached'
-	 to the tree with a parent-child relationship. For example I have a pInnerPassive PhysVol
-	 added to a pPassive PhysVol; the latter is refeneced in a SerialTransformer.
-	 pPassive is visited because of our implementation of the handleSerialTrasformer() method,
-	 but the pInnerPassive is never visited.
-	 */
-	//	if (nChildren > 0) {
-	//		qDebug() << "Looping over the children...";
-	//
-	//		for (unsigned int i=0; i<nChildren; ++i) {
-	//
-	//			unsigned int childPos = i;
-	//
-	//			// get the name of the i-th child volume
-	//			QString childName =  QString::fromStdString(vol->getNameOfChildVol(i));
-	//			qDebug() << "\t" << i << " childName:" << childName;
-	//
-	//			//	Returns the i-th child volume
-	//
-	//			// GEOPHYSVOL child
-	//			if ( dynamic_cast<const GeoPhysVol*>( &(*(vol->getChildVol(i) ))) ) {
-	//				qDebug() << "\t\t" << "the child" << i << "is a GeoPhysVol";
-	//				const GeoVPhysVol *childVolV = &(*(vol->getChildVol(i)));
-	//				const GeoPhysVol* childVol = dynamic_cast<const GeoPhysVol*>(childVolV);
-	//
-	//				handlePhysVol(childVol); // recursive call
-	//
-	//			} else {
-	//				qCritical("\t\tERROR!! the child is not a persistified volume/node!!!");
-	//				return;
-	//			}
-	//		}
-	//	}
-
-	//	if (nChildren > 0) {
-	//		for (unsigned int i=0; i<nChildren; ++i) {
-	//
-	//			unsigned int childPos = i;
-	//
-	//			// get the name of the i-th child volume
-	//			QString childName =  QString::fromStdString(vol->getNameOfChildVol(i));
-	//			qDebug() << "\t" << i << " childName:" << childName;
-	//
-	//			//	Returns the i-th child volume
-	//
-	//			// GEOPHYSVOL child
-	//			if ( dynamic_cast<const GeoPhysVol*>( &(*(vol->getChildVol(i) ))) ) {
-	//				qDebug() << "\t\t" << "the child" << i << "is a GeoPhysVol";
-	//				const GeoVPhysVol *childVolV = &(*(vol->getChildVol(i)));
-	//				const GeoPhysVol* childVol = dynamic_cast<const GeoPhysVol*>(childVolV);
-	//
-	//
-	//				// check if child volume has been stored already. If not, store it.
-	//				if ( ! isAddressStored( getAddressStringFromPointer( childVol )) ) {
-	//
-	//					// MATERIAL
-	//					const GeoMaterial * mat = childVol->getLogVol()->getMaterial();
-	//					const QString matName = QString::fromStdString(mat->getName());
-	//					qDebug() << "Child material name:" << matName;
-	//
-	//					// SHAPE
-	//					const GeoShape * shape = childVol->getLogVol()->getShape();
-	//					const QString shapeType = QString::fromStdString(shape->type());
-	//					qDebug() << "Child shape name:" << shapeType;
-	//
-	//					// LOGVOL
-	//					const GeoLogVol* logVol = childVol->getLogVol();
-	//					const QString logName = QString::fromStdString(logVol->getName());
-	//					qDebug() << "Child LogVol name:"  << logName;
-	//
-	//
-	//					/*
-	//					 * STORE THE OBJECTS IN THE DB
-	//					 */
-	//
-	//					// store the Material object in the DB
-	//					QVariant child_matId = storeObj(mat, matName);
-	//
-	//					// store the Shape object in the DB
-	//					QVariant child_shapeId = storeObj(shape, shapeType);
-	//
-	//					// store the LogVol volume in the DB
-	//					QVariant child_logvolId = storeObj(logVol, logName, child_shapeId, child_matId);
-	//
-	//					// store the PhysVol volume in the DB
-	//					storeObj(childVol, child_logvolId, physId);
-	//
-	//					// store the parent-child relationship in the DB
-	//					storeChildPosition(physId, childVol, childPos);
-	//
-	//				} else {
-	//					qDebug() << "Child volume stored already. Moving to the next one...";
-	//				}
-	//
-	//			}
-	//			// GeoSerialDenominator child
-	//			else if ( dynamic_cast<const GeoSerialDenominator*>( &(*(vol->getChildVol(i) ))) ) {
-	//				qDebug() << "\t\t" << "the child" << i << "is a GeoSerialDenominator";
-	//				//qWarning() << "\t\t" << "to be implemented!!!";
-	//				const GeoVPhysVol *childVolV = &(*(vol->getChildVol(i)));
-	//				const GeoSerialDenominator* childVol = dynamic_cast<const GeoSerialDenominator*>(childVolV);
-	//
-	//				std::string baseNameStr = childVol->getBaseName();
-	//				QString baseName = QString::fromStdString(baseNameStr);
-	//
-	//				QString address = getAddressStringFromPointer( childVol );
-	//
-	//				qDebug() << "base name:" << baseName << "address:" << address;
-	//
-	//				QVariant sdId;
-	//
-	//				// check if this object has been stored already
-	//				if (! isAddressStored(address)) {
-	//					// store the SerialDenominator object in the DB
-	//					qDebug() << "New SerialDenominator, storing it...";
-	//					sdId = storeObj(childVol, baseName);
-	//					qDebug() << "SerialDenominator stored. Id:" << sdId.toString();
-	//
-	//				} else {
-	//					sdId = getStoredIdFromAddress(address);
-	//					qDebug() << "SerialDenominator already stored in the DB. Got id:" << sdId.toString();
-	//				}
-	//
-	//				// store the parent-child relationship in the DB
-	//				storeChildPosition(physId, childVol, childPos);
-	//
-	//			}
-	//			// GEOFULLPHYSVOL child
-	//			else if ( dynamic_cast<const GeoFullPhysVol*>( &(*(vol->getChildVol(i) ))) ) {
-	//				qDebug() << "\t\t" << "the child" << i << "is a GeoFullPhysVol";
-	//				qWarning() << "\t\t" << "to be implemented!!!";
-	//				//				const GeoVFullPhysVol *childVolV = &(*(vol->getChildVol(i)));
-	//				//				const GeoFullPhysVol* childVol = dynamic_cast<const GeoFullPhysVol*>(childVolV);
-	//			}
-	//			else {
-	//				qCritical("\t\tERROR!! the child is not a persistified volume/node!!!");
-	//				return;
-	//			}
-	//
-	//
-	//			// examples:
-	//			//const GeoVPhysVol *child=&(*(pv->getChildVol(i)));
-	//			//
-	//			//if ( dynamic_cast<const GeoLogVol*>( &(*(vol->getChildVol(i) ))) )
-	//			//	qDebug() << "\t\t" << "the child" << i << "is a GeoLogVol";
-	//
-	//
-	//
-	//			/*
-	//				unsigned int nchildvol = pvc->getNChildVols();
-	//				     int lgg = 0;
-	//				     int llay = 0;
-	//				     std::string::size_type npos;
-	//				     for (unsigned ich=0; ich<nchildvol; ++ich) {
-	//				       PVConstLink pc = pvc->getChildVol(ich);
-	//				       std::string childname = (pc->getLogVol())->getName();
-	//				       if ((npos = childname.find("layer")) != std::string::npos ) {
-	//				         llay ++;
-	//				         //std::cerr<<" navigating RPC named "
-	//				         //       <<tname<<" child "
-	//				         //       <<ich<<" is a layer with tag "<<llay<<std::endl;
-	//				         unsigned int nch1 = pc->getNChildVols();
-	//				         lgg = 0;
-	//				         for (unsigned ngv=0; ngv<nch1; ++ngv) {
-	//				           PVConstLink pcgv = pc->getChildVol(ngv);
-	//				           std::string childname1 = (pcgv->getLogVol())->getName();
-	//				           if ((npos = childname1.find("gas volume")) != std::string::npos ) {
-	//				         lgg ++;
-	//				         //std::cerr<<" navigating RPC named "
-	//				         //       <<tname<<" child "
-	//				         //       <<ngv<<" is a gas volume  with tag "<<lgg<<std::endl;
-	//				         PVConstLink pcgg = pcgv->getChildVol(0);
-	//				         HepGeom::Transform3D trans = pvc->getXToChildVol(ich)*pc->getXToChildVol(ngv)*pcgv->getXToChildVol(0);
-	//				         m_Xlg[llay-1][lgg-1] = Amg::CLHEPTransformToEigen(trans);
-	//				           }
-	//				         }
-	//				       }
-	//				     }
-	//			 */
-	//
-	//		}
-	//	}
-
-
-	//	else {
-	//		qDebug() << "Object stored already. Moving to next one...";
-	//	}
-// }
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelActionLocal.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelActionLocal.cpp
deleted file mode 100644
index e2bf7b0be746360614b80c21d37e0d86baf21dfa..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/DumpGeoModelActionLocal.cpp
+++ /dev/null
@@ -1,1700 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// author: Riccardo.Maria.Bianchi@cern.ch
-// major updates: 
-// - Aug 2018 - Riccardo Maria BIANCHI
-// - Sep 2018 - Riccardo Maria BIANCHI
-// - May 2020 - J. Boudreau (write out GeoUnidentifiedShape
-
-// local includes
-#include "GeoWrite/DumpGeoModelActionLocal.h"
-
-// TFPersistification includes
-#include "TFPersistification/TransFunctionPersistifier.h"
-
-
-// GeoModelKernel includes
-#include "GeoModelKernel/GeoNodePath.h"
-#include "GeoModelKernel/GeoCountVolAction.h"
-// GeoModelKernel shapes
-#include "GeoModelKernel/GeoBox.h"
-#include "GeoModelKernel/GeoCons.h"
-#include "GeoModelKernel/GeoPara.h"
-#include "GeoModelKernel/GeoPcon.h"
-#include "GeoModelKernel/GeoPgon.h"
-#include "GeoModelKernel/GeoSimplePolygonBrep.h"
-#include "GeoModelKernel/GeoTrap.h"
-#include "GeoModelKernel/GeoTrd.h"
-#include "GeoModelKernel/GeoTube.h"
-#include "GeoModelKernel/GeoTubs.h"
-#include "GeoModelKernel/GeoShapeIntersection.h"
-#include "GeoModelKernel/GeoShapeShift.h"
-#include "GeoModelKernel/GeoShapeSubtraction.h"
-#include "GeoModelKernel/GeoShapeUnion.h"
-#include "GeoModelKernel/GeoUnidentifiedShape.h"
-// Qt includes
-#include <QSqlQuery>
-#include <QSqlError>
-#include <QSqlRecord>
-#include <QSqlDriver>
-#include <QVector>
-#include <QDebug>
-
-// C++ includes
-#include <sstream>
-
-
-// CLHEP includes // TODO: to remove once the migration to Eigen is complete
-#include "CLHEP/Geometry/Transform3D.h"
-#include "CLHEP/Matrix/SymMatrix.h"
-#include "CLHEP/Matrix/Matrix.h"
-#include "GeoPrimitives/CLHEPtoEigenConverter.h" // TODO: to be removed when dropping CLHEP
-
-
-
-// int DumpGeoModelActionLocal::getChildPosition(unsigned int parentId)
-// {
-// 	if ( ! (m_parentChildrenMap.contains(parentId)) ) {
-// 		m_parentChildrenMap[parentId] = 0;
-// 	}
-// 	++m_parentChildrenMap[parentId];
-// 	return m_parentChildrenMap[parentId];
-// }
-
-
-
-/// Get next child position available, given the parent type, id and copy number
-unsigned int DumpGeoModelActionLocal::getChildPosition(const QString parentId, const QString parentType, const unsigned int copyN)
-{
-	qDebug() << "DumpGeoModelActionLocal::getChildPosition()";
-	QString tableId = getIdFromNodeType(parentType);
-	QString key = tableId + ":" + parentId + ":" + QString::number(copyN);
-
-	if ( ! (m_parentChildrenMap2.contains(key)) ) {
-		m_parentChildrenMap2[key] = 1;
-	} else {
-	    ++m_parentChildrenMap2[key];
-    }
-
-    qDebug() << "parent key:" << key << " [tableId:parentId:copyN] - pos: " <<  m_parentChildrenMap2[key];
-	return m_parentChildrenMap2[key];
-}
-
-unsigned int DumpGeoModelActionLocal::setVolumeCopyNumber(QString volId, QString volType)
-{
-	qDebug() << "DumpGeoModelActionLocal::setVolumeCopyNumber()";
-	QString tableId = getIdFromNodeType(volType);
-	QString key = tableId + ":" + volId;
-
-	if ( ! (m_volumeCopiesMap.contains(key)) ) {
-		m_volumeCopiesMap[key] = 1;
-	} else {
-    	++m_volumeCopiesMap[key];
-    }
-
-    qDebug() << "volume key:" << key << " [tableId:volumeId] - copy number: " <<  m_volumeCopiesMap[key];
-	return m_volumeCopiesMap[key];
-}
-
-
-unsigned int DumpGeoModelActionLocal::getLatestParentCopyNumber(QString parentId, QString parentType)
-{
-	qDebug() << "DumpGeoModelActionLocal::getLatestParentCopyNumber()";
-	QString tableId = getIdFromNodeType(parentType);
-	QString key = tableId + ":" + parentId;
-    qDebug() << "key:" << key;
-
-	if ( ! (m_volumeCopiesMap.contains(key)) ) {
-		qFatal("ERROR!!! Something's wrong in storing the number of copies!");
-	}
-
-    qDebug() << "get latest parent copy number:" << key << " [tableId:parentId] - copy number: " <<  m_volumeCopiesMap[key];
-	return m_volumeCopiesMap[key];
-}
-
-
-
-// int DumpGeoModelActionLocal::getNewIdByNodeType(QString nodeType)
-// {
-// 	if ( ! (m_idsMap.contains(nodeType)) ) {
-// 		m_idsMap[nodeType] = 0;
-// 	}
-// 	++m_idsMap[nodeType];
-// 	return m_idsMap[nodeType];
-// }
-
-
-void DumpGeoModelActionLocal::handlePhysVol (const GeoPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handlePhysVol(GeoPhysVol*)";
-	handleVPhysVolObjects( vol );
-}
-
-
-void DumpGeoModelActionLocal::handleFullPhysVol (const GeoFullPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleFullPhysVol( GeoFullPhysVol* )";
-	handleVPhysVolObjects( vol );
-}
-
-
-void DumpGeoModelActionLocal::handleVPhysVolObjects(const GeoVPhysVol* vol)
-{
-	qDebug() << "DumpGeoModelActionLocal::handleVPhysVolObjects( GeoVPhysVol* )";
-
-
-	// get the address string for the current volume
-	QString address = getAddressStringFromPointer( vol );
-
-	// variables used to persistify the object
-	QVariant physId;
-
-	// check the volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-    const GeoVPhysVol* tailVol = path->getTail();
-    const GeoVPhysVol* headVol = path->getHead();
-    const GeoVPhysVol* upperVol = nullptr;
-    if (len > 1)
-        upperVol = path->getItem(len-2); // item(len-1) is THIS volume ==> the length is updated when visiting a VPhysVol node
-    else
-        upperVol = path->getItem(len-1); // ROOT volume
-	qDebug() << "path: " << path << " - length: " << len << " - upper vol: " << upperVol << " - tail vol: " << tailVol << " - head vol: " << headVol;
-	//	std::cout << "path: " << path << std::endl;
-
-	// this below is performed until the root volume is found, then "length" is not used anymore,
-	// because not updated when recursively visiting children of PhysVols: it is updated only when a PhysVol node is visited
-
-	bool doGetParentNode = true;
-	bool storeRootVolume = false;
-	bool isRootVolume = false;
-
-
-	if ( ! m_rootVolumeFound) {
-		if (len > 1) {
-			doGetParentNode = true; // TODO: is that needed????
-		} else{
-			qDebug() << "This is the Root volume!";
-            isRootVolume = true;
-			m_rootVolumeFound = true;
-			storeRootVolume = true;
-			doGetParentNode = false;
-		}
-	} else {
-		doGetParentNode = true;
-	}
-
-	// When dumping an unconnected sub-tree, e.g. a PhysVol used only in a SerialTransformer,
-	// we don't want to get the parent ID.
-	// If we do, the ID of the parent of the SerialTransformer is returned, which is wrong.
-	if (m_unconnectedTree) {
-		doGetParentNode = false;
-		qDebug() << "Handling an unconnected tree: we skip the parent-finding step...";
-		// now, we reset the status,
-		// otherwise all the children of the first referenced, unconnected volume
-		// will be treated as unconnected as well
-		qDebug() << "setting 'unconnected' to: false";
-		m_unconnectedTree = false;
-	}
-
-
-	// // get the parent volume
-	// QStringList parentList = getParentNode(); // you can use that, but you have to modify it to get len-2, instead of len-1, for VPhysVol nodes
-	// QString parentId = parentList[0];
-	// QString parentType = parentList[1];
-
-	// get the parent volume, if this is not the Root volume or an unconnected sub-tree
-	const GeoVPhysVol* parentNode = nullptr;
-	QVariant parentId = "NULL";
-
-    QString volTypeStr = "NNN";
-
-	if (doGetParentNode) {
-
-        bool isShared = vol->isShared();
-        qDebug() << "is this node shared?" << isShared;
-
-        //if (isShared)
-            parentNode = upperVol;
-        //else
-		//    parentNode = dynamic_cast<const GeoVPhysVol*>( &(*(vol->getParent() ))); // this cannot be trust for shared nodes
-        qDebug() << "parentNode address" << parentNode;
-
-		if (parentNode) {
-			QString parentAddress = getAddressStringFromPointer(parentNode);
-			qDebug() << "==> parent's address:" << parentNode;
-
-			if (isAddressStored(parentAddress))
-				parentId = getStoredIdFromAddress(parentAddress);
-			//		else
-			//			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-			qDebug() << "==> parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-		}
-		else {
-			qDebug() << "NULL parent node!! --> this node appeared unconnected.";
-		}
-	}
-
-	// counting children
-	unsigned int nChildren = vol->getNChildVols();
-	qDebug() << "number of child physical volumes:" << nChildren;
-	qDebug() << "[number of PhysVol and SerialTransformer child nodes:" << vol->getNChildVolAndST() << "]";
-
-	//// for debug
-	// GeoCountVolAction cv;
-	// cv.setDepthLimit(1);
-	// vol->exec(&cv);
-	// int nChildCount = cv.getCount();
-	// qDebug() << "number of child volumes:" << nChildCount;
-
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		/*
-		 * VPhysVol features:
-		 * - 1 parent VPhysVol (if any)
-		 * - 1 LogVol
-		 * - 1 Material
-		 * - 1 Shape
-		 */
-
-		// Note: PhysVol has no name. Its LogVol has a name.
-		//	  const std::string name = vol->getLogVol()->getName();
-
-		// LOGVOL
-		const GeoLogVol* logVol = vol->getLogVol();
-		const QString logName = QString::fromStdString(logVol->getName());
-		qDebug() << "LogVol name:"  << logName;
-
-
-		// MATERIAL
-		const GeoMaterial * mat = vol->getLogVol()->getMaterial();
-		// const QString matName = QString::fromStdString(mat->getName());
-		// qDebug() << "material name:" << matName << ", address:" << mat;
-
-
-		// SHAPE
-		const GeoShape * shape = vol->getLogVol()->getShape();
-		// const QString shapeType = QString::fromStdString(shape->type());
-		// qDebug() << "shape name:" << shapeType  << ", address:" << shape;
-		// // get shape parameters
-		// QString shapePars = getShapeParameters(shape);
-
-
-		/*
-		 * STORE THE OBJECTS IN THE DB
-		 */
-
-		// store/get the Material object into/from the DB
-		QVariant matId;
-		// matId = storeObj(mat, matName);
-		matId = storeMaterial(mat);
-
-		// store/get the Shape object into/from the DB
-		QVariant shapeId;
-		shapeId = storeShape(shape);
-		// shapeId = storeObj(shape, shapeType, shapePars);
-
-		// store/get the LogVol object into/from the DB
-		QVariant logvolId;
-		logvolId = storeObj(logVol, logName, shapeId, matId);
-
-		if (dynamic_cast<const GeoPhysVol*>(vol)) {
-			qDebug() << "New PhysVol, storing it...";
-			const GeoPhysVol* physVol = dynamic_cast<const GeoPhysVol*>(vol);
-			// store the PhysVol volume into the DB
-			physId = storeObj(physVol, logvolId, parentId, storeRootVolume); // with parent info
-            volTypeStr = "GeoPhysVol";
-			qDebug() << "PhysVol stored. Id:" << physId.toString();
-		}
-		else if (dynamic_cast<const GeoFullPhysVol*>(vol)) {
-			qDebug() << "New FullPhysVol, storing it...";
-			const GeoFullPhysVol* fullVol = dynamic_cast<const GeoFullPhysVol*>(vol);
-			// store the FullPhysVol volume into the DB
-			physId = storeObj(fullVol, logvolId, parentId, storeRootVolume); // with parent info
-            volTypeStr = "GeoFullPhysVol";
-			qDebug() << "FullPhysVol stored. Id:" << physId.toString();
-		} else {
-			qWarning() << "WARNING!! Unknown GeoVPhysVol type!!";
-		}
-
-	} else {
-		//	qDebug() << "Volume stored already. It is a shared volume. Taking ID from memory map and moving to its physical children...";
-		qDebug() << "Volume stored already. It is a shared volume. Now, we are handling a 'copy' of it. We take the ID from memory map...";
-		physId = getStoredIdFromAddress(address);
-        volTypeStr = getGeoTypeFromVPhysVol(vol);
-	}
-
-    // Now we get the 'copy number' for this volume,
-    // to distinguish this volume from the other volumes created from the same shared node (if any)
-    if (volTypeStr == "NULL") qFatal("ERROR!! volTypeStr is 'NULL'!!!");
-    const unsigned int volCopyN = setVolumeCopyNumber(physId.toString(), volTypeStr);
-    qDebug() << "physId: " << physId << "- volume copy number: " << volCopyN;
-
-    if ( isRootVolume || parentId == "NULL") {
-        qDebug() << "This is the RootVolume or the volume has 'NULL' parent (unconnected subtree?) - So, we do not store the child position for this volume!";
-    } else {
-	    // store the parent-child relationship in the DB
-	    QString parentType = getGeoTypeFromVPhysVol(parentNode);
-        // get the copy number of the parent
-        const unsigned int parentCopyN = getLatestParentCopyNumber(parentId.toString(), parentType);
-	    qDebug() << "PhysVol Id:" << physId << " - copyNumber:" << QString::number(parentCopyN);
-
-	    QString childType  = getGeoTypeFromVPhysVol(vol);
-
-	    storeChildPosition(parentId, parentType, physId, parentCopyN, getChildPosition( parentId.toString(), parentType, parentCopyN), childType, volCopyN);
-    }
-}
-
-
-QString DumpGeoModelActionLocal::getGeoTypeFromVPhysVol(const GeoVPhysVol* vol)
-{
-	if (!vol)
-		return QString("NULL");
-
-	QString geoType;
-	if (dynamic_cast<const GeoPhysVol*>(vol)) {
-		qDebug() << "GeoType: GeoPhysVol";
-		geoType = "GeoPhysVol";
-	}
-	else if (dynamic_cast<const GeoFullPhysVol*>(vol)) {
-		qDebug() << "GeoType: GeoFullPhysVol";
-		geoType = "GeoFullPhysVol";
-	} else {
-		qWarning() << "WARNING!! Unknown GeoVPhysVol type!!";
-	}
-	return geoType;
-}
-
-
-void DumpGeoModelActionLocal::handleSerialDenominator (const GeoSerialDenominator *node)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleSerialDenominator(GeoSerialDenominator*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-	std::string baseNameStr = node->getBaseName();
-	QString baseName = QString::fromStdString(baseNameStr);
-	qDebug() << "base name:" << baseName << "address:" << address;
-
-	// variables used to persistify the object
-	QVariant sdId;
-
-	// get the parent volume
-	QStringList parentList = getParentNode();
-	QString parentId = parentList[0];
-	QString parentType = parentList[1];
-	unsigned int parentCopyN = getLatestParentCopyNumber(parentId, parentType);
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New SerialDenominator, storing it...";
-
-		/* STORE THE OBJECT IN THE DB */
-		sdId = storeObj(node, baseName);
-		qDebug() << "SerialDenominator stored. Id:" << sdId.toString();
-
-	} else {
-		sdId = getStoredIdFromAddress(address);
-		qDebug() << "SerialDenominator already stored in the DB. Id:" << sdId.toString();
-	}
-
-	storeChildPosition(parentId, parentType, sdId, parentCopyN, getChildPosition( parentId, parentType, parentCopyN ), "GeoSerialDenominator", 0); // TODO: Check if the copyN=0 at the end is OK for nodes as Transforms, which cannot be used as parents, only as children!
-}
-
-
-
-void DumpGeoModelActionLocal::handleSerialTransformer (const GeoSerialTransformer *node)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleSerialTransformer(GeoSerialTransformer*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-	// variables used to persistify the object
-	QVariant functionId;
-	QVariant physvolId;
-	QVariant physvolTable;
-	unsigned int nCopies;
-	QVariant stId;
-
-	// get the parent volume
-	QStringList parentList = getParentNode();
-	QString parentId = parentList[0];
-	QString parentType = parentList[1];
-	unsigned int parentCopyN = getLatestParentCopyNumber(parentId, parentType);
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New SerialTransformer, storing it...";
-
-		/*
-		 * Get Node characteristics
-		 *
-		 * SerialTransformer features:
-		 * - 1 parent PhysVol (if any)
-		 * - 1 GENFUNCTION
-		 * - 1 PhysVolId
-		 * - 1 PhysVolType
-		 * - 1 number of copies
-		 */
-		// get linked function and number of copies
-		const GeoXF::Function * func = node->getFunction();
-		nCopies =  node->getNCopies();
-		qDebug() << "n. of copies:" << QString::number(nCopies);
-
-		// get linked VPhysVol volume
-		const GeoVPhysVol *vol = &( *( node->getVolume() ) );
-		// const GeoPhysVol* vol = dynamic_cast<const GeoPhysVol*>(volV);
-		QString volType;
-		if (dynamic_cast<const GeoPhysVol*>(vol)) {
-			volType = "GeoPhysVol";
-		} else if (dynamic_cast<const GeoFullPhysVol*>(vol)) {
-			volType = "GeoFullPhysVol";
-		} else {
-			qWarning() << "ERROR!!! Unknown VPhysVol type!!";
-		}
-
-		/*
-		 * Persistify the Function
-		 */
-	 	TransFunctionPersistifier persistifier;
-        try {
-            persistifier.persistify(*func);
-        } catch (const std::runtime_error & error) {
-            std::cout << "SEVERE WARNING!! Handling std::runtime_error! -->" << error.what() << std::endl;
-        }
-		QString expression = QString::fromStdString( persistifier.getCodedString() );
-		qDebug() << "FUNCTION:" << expression;
-
-		if (expression.size() == 0) {
-				qFatal("FATAL ERROR!! Function expression is empty!! Aborting...");
-				abort();
-		}
-
-
-		/*
-		 * STORE/GET THE INNER OBJECTS IN THE DB
-		 */
-
-		// store/get the Function object in the DB
-		functionId = storeObj(func, expression);
-
-		// store/get the PhysVol volume in the DB
-
-		/* Concerning the physVol referenced by the SerialTransformer:
-		 *
-		 * - if physvol is not stored in the DB already;
-		 * - if physVol has no parent (==NULL)
-		 * ==> it means that its children will never visited by the NodeAction executed on the root tree
-		 *
-		 * ==> So, we need to persitify it as a new tree, to get all its children visited and persistified
-		 *
-		 */
-		qDebug() << "Handling the referenced VPhysVol, going into the sub-tree, if any...";
-		handleReferencedVPhysVol(vol);
-
-		qDebug() << "Storing the referenced VPhysVol...";
-		QString physvolAddress = getAddressStringFromPointer(vol);
-		physvolId = getStoredIdFromAddress(physvolAddress);
-
-
-		/*
-		 * STORE THE NODE INTO THE DB AND ITS POSITION WITHIN THE TREE
-		 */
-		// store the SerialTransformer volume in the DB
-		stId = storeObj(node, functionId, physvolId, volType, nCopies);
-		qDebug() << "SerialTransformer stored. Id:" << stId.toString();
-
-	} else {
-		stId = getStoredIdFromAddress(address);
-		qDebug() << "SerialTransformer already stored in the DB. Id:" << stId.toString();
-	}
-
-	qDebug() << "Storing:" << parentId << parentType << stId;
-	storeChildPosition(parentId, parentType, stId, parentCopyN, getChildPosition( parentId, parentType, parentCopyN ), "GeoSerialTransformer", 0); // TODO: Check if the copyN=0 at the end is OK for nodes as Transforms, which cannot be used as parents, only as children!
-}
-
-
-
-
-void DumpGeoModelActionLocal::handleTransform(const GeoTransform* node)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleTransform(GeoTransform*)";
-
-	QString address = getAddressStringFromPointer( node );
-
-	// get the parent volume
-	QStringList parentList = getParentNode();
-	QString parentId = parentList[0];
-	QString parentType = parentList[1];
-
-    unsigned int parentCopyN = getLatestParentCopyNumber(parentId, parentType);
-
-	/*
-	 * STORE THE OBJECT IN THE DB AND ITS PLACE WITHIN THE TREE
-	 */
-
-	 // store the transformation in the DB
-	 QVariant trId = storeTranform(node);
-
-	// Store the child-parent relationship
-
-	if ( dynamic_cast<const GeoAlignableTransform*>(node) ) {
-		qDebug() << "Storing a GeoAlignableTransform...";
-		storeChildPosition(parentId, parentType, trId, parentCopyN, getChildPosition( parentId, parentType, parentCopyN ), "GeoAlignableTransform", 0); // TODO: Check if the copyN=0 at the end is OK for nodes as Transforms, which cannot be used as parents, only as children!
-	}
-	else if ( dynamic_cast<const GeoTransform*>(node) ) {
-		qDebug() << "Storing a GeoTransform...";
-		storeChildPosition(parentId, parentType, trId, parentCopyN, getChildPosition( parentId, parentType, parentCopyN ), "GeoTransform", 0); // TODO: Check if the copyN=0 at the end is OK for nodes as Transforms, which cannot be used as parents, only as children!
-	}
-	else {
-		qWarning("Not implemented yet!!!! ");
-	}
-
-}
-
-
-void DumpGeoModelActionLocal::handleNameTag(const GeoNameTag* node)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleNameTag(GeoNameTag*)";
-
-	std::string nameStr = node->getName();
-	QString name = QString::fromStdString(nameStr);
-	qDebug() << "name:" << name;
-
-	QString address = getAddressStringFromPointer( node );
-
-	// get the parent volume
-	QStringList parentList = getParentNode();
-	QString parentId = parentList[0];
-	QString parentType = parentList[1];
-    unsigned int parentCopyN = getLatestParentCopyNumber(parentId, parentType);
-
-    // TODO: add "if stored"...
-
-	/*
-	 * STORE THE OBJECT IN THE DB AND ITS POSITION WITHIN THE TREE
-	 */
-
-	 // store the name tag in the DB
-	 QVariant nameId = storeObj(node, name);
-
-	 // Store the child-parent relationship
-	 storeChildPosition(parentId, parentType, nameId, parentCopyN, getChildPosition( parentId, parentType, parentCopyN ), "GeoNameTag", 0);
-}
-
-
-
-//__________________________________________________
-QStringList DumpGeoModelActionLocal::getParentNode()
-{
-    qDebug() << "DumpGeoModelActionLocal::getParentNode()";
-
-	// check the current volume position in the geometry tree
-	GeoNodePath* path = getPath();
-	unsigned int len = path->getLength();
-	qDebug() << "length: " << len;
-
-	// reset the number of visited node, if len is different than before
-	if (len > m_len) {
-		m_len_nChild = 0;
-		m_len = len;
-	}
-	// update number of visited nodes if len is the same as before
-	else {
-		++m_len_nChild;
-	}
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = nullptr;
-	QVariant parentId = "NULL";
-	QString parentType = "NULL";
-
-		if (len >= 1)
-		{
-			// get the parent node
-			parentNode = path->getItem(len-1); // i=(len-1) gives you the parent VPhysVol
-
-			if (parentNode) {
-
-				// get the parent type
-				parentType = getGeoTypeFromVPhysVol(parentNode);
-
-				// get the parent memory address
-				QString parentAddress = getAddressStringFromPointer(parentNode);
-				qDebug() << "-- parent's address:" << parentNode;
-
-				// get the id of the parent node, which should be stored already in the DB
-				if (isAddressStored(parentAddress)) {
-					parentId = getStoredIdFromAddress(parentAddress);
-				}
-				else {
-					// qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-					qWarning() << "The parent node of this child node seems to not having be stored in the DB yet! [It is normal if it is the root volume or a transformation node used for example only in the definition of a 'GeoShapeShift' instance]";
-				}
-				qDebug() << "-- parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-			}
-		}
-		else{
-			// qWarning() << "ERROR!! Len == 1, but this cannot be the Root volume!";
-			qWarning() << "WARNING!! Len == 0, but this cannot be the Root volume!";
-		}
-
-		QStringList parentList;
-		parentList << parentId.toString() << parentType;
-
-		return  parentList;
-}
-
-
-//__________________________________________________________________
-QVariant DumpGeoModelActionLocal::storeShape(const GeoShape* shape)
-{
-	const QString shapeType = QString::fromStdString(shape->type());
-	qDebug() << "storeShape() - shape name:" << shapeType  << ", address:" << shape;
-	// get shape parameters
-	QString shapePars = getShapeParameters(shape);
-	// store the shape in the DB and returns the ID
-	return storeObj(shape, shapeType, shapePars);
-}
-
-
-//______________________________________________________________________
-QVariant DumpGeoModelActionLocal::storeMaterial(const GeoMaterial* mat)
-{
-	const QString matName = QString::fromStdString(mat->getName());   //The name of the material.
-	const QString matID = QString::number(mat->getID());              //Gives an integral identifier for the material.For convenience.
-	const QString matDensity = QString::number(mat->getDensity());	  //The density of the material.
-	const unsigned int numElements = mat->getNumElements();
-
-	const QString matNumElements = QString::number(numElements);
-	qDebug() << "storeMaterial() - material name:" << matName
-			<< ", address:" << mat
-			<< ", matID:" << matID
-			<< ", matDensity:" << matDensity
-	        << ", matNumElements:" << matNumElements;
-
-	// loop over the elements composing the material
-	QString matElements;
-	QStringList matElementsList;
-	for (unsigned int i=0; i < numElements; i++) {
-
-		//Gets the i-th element.
-	  const GeoElement* element = mat->getElement(i);
-	  std::string elName = element->getName();
-	  /*
-	  std::cout << "\t element n. " << i << std::endl;
-	  std::cout << "\t element address: " << element << std::endl;
-	  std::cout << "\t element name: " << elName << std::endl;
-	  */
-
-	  // Store the element and get its DataBase ID
-	  QVariant elementId = storeElement(element);
-
-	  //Gets the fraction by weight of the i-th element
-	  const QString elementFraction = QString::number( mat->getFraction(i) );
-
-	  qDebug() << "\t--> element ID: " << elementId.toString() << " - getFraction:" << elementFraction;
-
-	  matElementsList << elementId.toString() + ":" + elementFraction;
-	}
-	matElements = matElementsList.join(";");
-
-	qDebug() << "\t==> material's elements:" << matElements;
-
-	// store the material in the DB and returns the ID
-	return storeObj(mat, matName, matDensity, matElements);
-}
-
-//_______________________________________________________________________
-QVariant DumpGeoModelActionLocal::storeElement(const GeoElement* el)
-{
-	//	The name of the element, e.g. "Carbon".
-	const QString elName = QString::fromStdString(el->getName());
-
-	//	The chemical symbol for the element, e.g. C, O, S, Na....
-	const QString elSymbol = QString::fromStdString(el->getSymbol());
-
-	//	The atomic number Z for the material.
-	const QString elZ = QString::number(el->getZ());
-
-	//	The average atomic mass for the element.
-	const QString elA = QString::number(el->getA());
-
-	// store the material in the DB and returns the ID
-	return storeObj(el, elName, elSymbol, elZ, elA);
-}
-
-//_______________________________________________________________________
-QVariant DumpGeoModelActionLocal::storeTranform(const GeoTransform* node)
-{
-	/*
-	 * STORE THE OBJECT IN THE DB
-	 */
-
-	 QString address = getAddressStringFromPointer( node );
-
-	 QVariant trId;
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "New Transform, storing it...";
-
-
-		HepGeom::Transform3D tr = Amg::EigenTransformToCLHEP( node->getTransform() );
-
-		std::vector<double> params = getTransformParameters(tr);
-		qDebug() << "Transform parameters:" << QVector<double>::fromStdVector(params);
-
-		/*
-		 * STORE THE OBJECT IN THE DB
-		 */
-
-		// store the object in the DB
-		if ( dynamic_cast<const GeoAlignableTransform*>(node) ) {
-			trId = storeObj(dynamic_cast<const GeoAlignableTransform*>(node), params);
-			qDebug() << "AlignableTransform stored. Id:" << trId.toString();
-		}
-		else if ( dynamic_cast<const GeoTransform*>(node) ) {
-			trId = storeObj(dynamic_cast<const GeoTransform*>(node), params);
-			qDebug() << "Transform stored. Id:" << trId.toString();
-		}
-		else {
-			qDebug() << "WARNING!!! - This type of transformation needs to be customized yet!!";
-		}
-
-	} else {
-		trId = getStoredIdFromAddress(address);
-		qDebug() << "Transform already stored in the DB. Id:" << trId.toString();
-	}
-
-	return trId;
-}
-
-
-void DumpGeoModelActionLocal::handleReferencedVPhysVol (const GeoVPhysVol *vol)
-{
-	qDebug() << "\nDumpGeoModelActionLocal::handleReferencedVPhysVol(GeoVPhysVol*)";
-
-	// qDebug() << "PhysVol's LogVol name:" << QString::fromStdString(vol->getLogVol()->getName());
-
-	// get the address string for the current volume
-	QString address = getAddressStringFromPointer( vol );
-
-	QVariant parentId = "NULL";
-
-	qDebug() << "setting 'unconnected' to: false";
-	m_unconnectedTree = false;
-
-	// get the parent volume, if this is not the Root volume
-	const GeoVPhysVol* parentNode = dynamic_cast<const GeoVPhysVol*>( &(*(vol->getParent() )));
-
-	if (parentNode) {
-		QString parentAddress = getAddressStringFromPointer(parentNode);
-		qDebug() << "--> parent's address:" << parentNode;
-
-		if (isAddressStored(parentAddress))
-			parentId = getStoredIdFromAddress(parentAddress);
-		//		else
-		//			qFatal("FATAL ERROR!!! - The parent node of this child should has been stored in the DB already, but it was not found!!");
-
-		qDebug() << "--> parent's LogVol name:" << QString::fromStdString(parentNode->getLogVol()->getName());
-	}
-	else {
-		qDebug() << "NULL parent node!! --> it seems to be an unconnected subtree.";
-		qDebug() << "setting 'unconnected' to: true";
-		m_unconnectedTree = true;
-	}
-
-    // *** FOR DEBUG ***
-	// // counting children
-	// unsigned int nChildren = vol->getNChildVols();
-	// qDebug() << "number of child physical volumes:" << nChildren;
-	// qDebug() << "[number of PhysVol and SerialTransformer child nodes:" << vol->getNChildVolAndST() << "]";
-	//
-	// GeoCountVolAction cv;
-	// cv.setDepthLimit(1);
-	// vol->exec(&cv);
-	// int nChildCount = cv.getCount();
-	// qDebug() << "number of child volumes:" << nChildCount;
-    // *****************
-
-
-	// check if this object has been stored already
-	if (! isAddressStored(address)) {
-
-		qDebug() << "This is a new root PhysVol node of an 'unconnected' tree, so we start another action on it to dump it into the DB...";
-
-		// Dump the tree volumes into the DB
-		vol->exec(this); // TODO: check if the new action overwrites the id of the volumes already in the DB...!!!
-
-	} else {
-		qDebug() << "The referenced volume has been stored already. Skipping...";
-	}
-	// at the end, we make sure we reset the status
-	qDebug() << "setting 'unconnected' to: false";
-	m_unconnectedTree = false;
-}
-
-
-// Get shape parameters
-QString DumpGeoModelActionLocal::getShapeParameters(const GeoShape* shape)
-{
-	const QString shapeType = QString::fromStdString(shape->type());
-	qDebug() << "shapeType:" << shapeType;
-
-	QString shapePars = "";
-
-	if (shapeType == "Box") {
-		qDebug() << "get GeoBox parameters";
-		QStringList pars;
-		const GeoBox* box = dynamic_cast<const GeoBox*>(shape);
-		pars << "XHalfLength=" + QString::number(box->getXHalfLength()) ;
-		pars << "YHalfLength=" + QString::number(box->getYHalfLength()) ;
-		pars << "ZHalfLength=" + QString::number(box->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Cons") {
-		QStringList pars;
-		const GeoCons* shapeIn = dynamic_cast<const GeoCons*>(shape);
-		pars << "RMin1=" + QString::number(shapeIn->getRMin1()) ;
-		pars << "RMin2=" + QString::number(shapeIn->getRMin2()) ;
-		pars << "RMax1=" + QString::number(shapeIn->getRMax1()) ;
-		pars << "RMax2=" + QString::number(shapeIn->getRMax2()) ;
-		pars << "DZ=" + QString::number(shapeIn->getDZ()) ;
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Para") {
-		QStringList pars;
-		const GeoPara* shapeIn = dynamic_cast<const GeoPara*>(shape);
-		pars << "XHalfLength=" + QString::number(shapeIn->getXHalfLength()) ;
-		pars << "YHalfLength=" + QString::number(shapeIn->getYHalfLength()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "Alpha=" + QString::number(shapeIn->getAlpha()) ;
-		pars << "Theta=" + QString::number(shapeIn->getTheta()) ;
-		pars << "Phi=" + QString::number(shapeIn->getPhi()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Pcon") {
-		QStringList pars;
-		const GeoPcon* shapeIn = dynamic_cast<const GeoPcon*>(shape);
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi());
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi());
-		// get number of Z planes and loop over them
-		const int nZplanes = shapeIn->getNPlanes();
-		pars << "NZPlanes=" + QString::number(nZplanes);
-		for (int i=0; i<nZplanes; ++i) {
-			pars << "ZPos=" + QString::number(shapeIn->getZPlane(i));
-			pars << "ZRmin=" + QString::number(shapeIn->getRMinPlane(i));
-			pars << "ZRmax=" + QString::number(shapeIn->getRMaxPlane(i));
-		}
-		shapePars = pars.join(";");
-	} else if (shapeType == "Pgon") {
-		QStringList pars;
-		const GeoPgon* shapeIn = dynamic_cast<const GeoPgon*>(shape);
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		pars << "NSides=" + QString::number(shapeIn->getNSides()) ;
-		// get number of Z planes and loop over them
-		const int nZplanes = shapeIn->getNPlanes();
-		pars << "NZPlanes=" + QString::number(nZplanes);
-		for (int i=0; i<nZplanes; ++i) {
-			pars << "ZPos=" + QString::number(shapeIn->getZPlane(i));
-			pars << "ZRmin=" + QString::number(shapeIn->getRMinPlane(i));
-			pars << "ZRmax=" + QString::number(shapeIn->getRMaxPlane(i));
-		}
-		shapePars = pars.join(";");
-	} else if (shapeType == "SimplePolygonBrep") {
-		QStringList pars;
-		const GeoSimplePolygonBrep* shapeIn = dynamic_cast<const GeoSimplePolygonBrep*>(shape);
-		pars << "DZ=" + QString::number(shapeIn->getDZ()) ;
-		// get number of vertices and loop over them
-		const int nVertices = shapeIn->getNVertices();
-		pars << "NVertices=" + QString::number(nVertices);
-		for (int i=0; i<nVertices; ++i) {
-			pars << "xV=" + QString::number(shapeIn->getXVertex(i));
-			pars << "yV=" + QString::number(shapeIn->getYVertex(i));
-		}
-		shapePars = pars.join(";");
-	} else if (shapeType == "Trap") {
-		QStringList pars;
-		const GeoTrap* shapeIn = dynamic_cast<const GeoTrap*>(shape);
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "Theta=" + QString::number(shapeIn->getTheta()) ;
-		pars << "Phi=" + QString::number(shapeIn->getPhi()) ;
-		pars << "Dydzn=" + QString::number(shapeIn->getDydzn()) ;
-		pars << "Dxdyndzn=" + QString::number(shapeIn->getDxdyndzn()) ;
-		pars << "Dxdypdzn=" + QString::number(shapeIn->getDxdypdzn()) ;
-		pars << "Angleydzn=" + QString::number(shapeIn->getAngleydzn()) ;
-		pars << "Dydzp=" + QString::number(shapeIn->getDydzp()) ;
-		pars << "Dxdyndzp=" + QString::number(shapeIn->getDxdyndzp()) ;
-		pars << "Dxdypdzp=" + QString::number(shapeIn->getDxdypdzp()) ;
-		pars << "Angleydzp=" + QString::number(shapeIn->getAngleydzp()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Trd") {
-		QStringList pars;
-		const GeoTrd* shapeIn = dynamic_cast<const GeoTrd*>(shape);
-		pars << "XHalfLength1=" + QString::number(shapeIn->getXHalfLength1()) ;
-		pars << "XHalfLength2=" + QString::number(shapeIn->getXHalfLength2()) ;
-		pars << "YHalfLength1=" + QString::number(shapeIn->getYHalfLength1()) ;
-		pars << "YHalfLength2=" + QString::number(shapeIn->getYHalfLength2()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Tube") {
-		QStringList pars;
-		const GeoTube* tube = dynamic_cast<const GeoTube*>(shape);
-		pars << "RMin=" + QString::number(tube->getRMin()) ;
-		pars << "RMax=" + QString::number(tube->getRMax()) ;
-		pars << "ZHalfLength=" + QString::number(tube->getZHalfLength()) ;
-		shapePars = pars.join(";");
-	} else if (shapeType == "Tubs") {
-		QStringList pars;
-		const GeoTubs* shapeIn = dynamic_cast<const GeoTubs*>(shape);
-		pars << "RMin=" + QString::number(shapeIn->getRMin()) ;
-		pars << "RMax=" + QString::number(shapeIn->getRMax()) ;
-		pars << "ZHalfLength=" + QString::number(shapeIn->getZHalfLength()) ;
-		pars << "SPhi=" + QString::number(shapeIn->getSPhi()) ;
-		pars << "DPhi=" + QString::number(shapeIn->getDPhi()) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType == "Intersection") {
-		qDebug() << "get GeoShapeIntersection parameters";
-		QStringList pars;
-		const GeoShapeIntersection* shapeIn = dynamic_cast<const GeoShapeIntersection*>(shape);
-		// get the referenced Shape used in the 'union' operation, store it in the DB
-		const GeoShape* shapeOpA = shapeIn->getOpA();
-		QVariant shapeIdA = storeShape(shapeOpA);
-		const GeoShape* shapeOpB = shapeIn->getOpB();
-		QVariant shapeIdB = storeShape(shapeOpB);
-		pars << "opA=" + QString::number( shapeIdA.toUInt() ) ;
-		pars << "opB=" + QString::number( shapeIdB.toUInt() ) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType == "Shift") {
-		qDebug() << "get GeoShapeShift parameters";
-		QStringList pars;
-		const GeoShapeShift* shapeIn = dynamic_cast<const GeoShapeShift*>(shape);
-
-		// get the referenced Shape used in the 'shift' operation, store it in the DB
-		const GeoShape* shapeOp = shapeIn->getOp();
-		QVariant shapeId = storeShape(shapeOp);
-
-		// get the Transformation, store it in the DB
-		GeoTransform* transf = new GeoTransform( shapeIn->getX() );
-		QVariant trId = storeTranform(transf);
-
-		pars << "A=" + QString::number( shapeId.toUInt() ) ;
-		pars << "X=" + QString::number( trId.toUInt() ) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType == "Subtraction") {
-		qDebug() << "get GeoShapeSubtraction parameters";
-		QStringList pars;
-		const GeoShapeSubtraction* shapeIn = dynamic_cast<const GeoShapeSubtraction*>(shape);
-		// get the referenced Shape used in the 'union' operation, store it in the DB
-		const GeoShape* shapeOpA = shapeIn->getOpA();
-		QVariant shapeIdA = storeShape(shapeOpA);
-		const GeoShape* shapeOpB = shapeIn->getOpB();
-		QVariant shapeIdB = storeShape(shapeOpB);
-		pars << "opA=" + QString::number( shapeIdA.toUInt() ) ;
-		pars << "opB=" + QString::number( shapeIdB.toUInt() ) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType == "Union") {
-		qDebug() << "get GeoShapeUnion parameters";
-		QStringList pars;
-		const GeoShapeUnion* shapeIn = dynamic_cast<const GeoShapeUnion*>(shape);
-
-		// get the referenced Shape used in the 'union' operation, store it in the DB
-		const GeoShape* shapeOpA = shapeIn->getOpA();
-		QVariant shapeIdA = storeShape(shapeOpA);
-		const GeoShape* shapeOpB = shapeIn->getOpB();
-		QVariant shapeIdB = storeShape(shapeOpB);
-
-		pars << "opA=" + QString::number( shapeIdA.toUInt() ) ;
-		pars << "opB=" + QString::number( shapeIdB.toUInt() ) ;
-		shapePars = pars.join(";");
-	}
-	else if (shapeType=="UnidentifiedShape") {
-	  QStringList pars;
-	  const GeoUnidentifiedShape *shapeIn=dynamic_cast<const GeoUnidentifiedShape*>(shape);
-          pars << "name="+QString::fromStdString(shapeIn->name());
-	  pars << "asciiData="+QString::fromStdString(shapeIn->asciiData());
-	  shapePars=pars.join(";");
-	}
-
-	else {
-		qDebug() << "WARNING!!! - Shape '" << shapeType << "' needs to be customized!!";
-	}
-
-  return shapePars;
-
-}
-
-
-std::vector<double> DumpGeoModelActionLocal::getTransformParameters(HepGeom::Transform3D tr)
-{
-	std::vector<double> vec;
-
-	vec.push_back(tr.xx());
-	vec.push_back(tr.xy());
-	vec.push_back(tr.xz());
-
-	vec.push_back(tr.yx());
-	vec.push_back(tr.yy());
-	vec.push_back(tr.yz());
-
-	vec.push_back(tr.zx());
-	vec.push_back(tr.zy());
-	vec.push_back(tr.zz());
-
-	vec.push_back(tr.dx());
-	vec.push_back(tr.dy());
-	vec.push_back(tr.dz());
-
-	return vec;
-}
-
-
-DumpGeoModelActionLocal::DumpGeoModelActionLocal(GMDBManager &db)
-{
-	qDebug() << "DumpGeoModelActionLocal: constructor";
-
-	// init variables
-	m_len = 0;
-	m_len_nChild = 0;
-	m_rootVolumeFound = false;
-	m_unconnectedTree = false;
-
-	// init anche check the database handle
-	m_dbManager = &db;
-	if (m_dbManager->isOpen()) {
-		qDebug() << "OK! Database is open!";
-	}
-	else {
-		qDebug() << "Database is not open!";
-	}
-
-    m_dbpath = m_dbManager->getDBFilePath();
-
-	// get DB metadata
-	m_memMap_Tables = m_dbManager->getAll_NodeTypesTableIDs();
-	// qDebug() << "m_memMap_Tables:" << m_memMap_Tables;
-
-}
-
-DumpGeoModelActionLocal::~DumpGeoModelActionLocal()
-{
-	// nothing to do so far...
-}
-
-
-void DumpGeoModelActionLocal::showMemoryMap()
-{
-	qDebug() << "DumpGeoModelActionLocal::showMemoryMap()";
-
-	QMap<QString, QVariant>::const_iterator it = m_memMap.constBegin();
-	while (it != m_memMap.constEnd()) {
-		std::cout << it.key().toStdString() << ": " << it.value().toString().toStdString() << std::endl;
-		++it;
-	}
-}
-
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoMaterial* pointer, const QString name, const QString density, const QString elements)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoMaterial*) - name:" << name << "- address:" << pointer << "- density:" << density << "- elements:" << elements;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant materialId;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New Material! Storing it...";
-
-		materialId = addMaterial(name, density, elements);
-
-		storeAddress( address, materialId );
-	}
-	else {
-		qDebug() << "Material node stored already. Getting ID from the memory map...";
-		materialId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "materialId:" << materialId;
-	return materialId;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoElement* pointer, const QString name, const QString symbol, const QString elZ, const QString elA)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoElement*) - name:" << name << "address:" << pointer << " - symbol: " << symbol << " - elZ: " << elZ << " - elA: " << elA;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant elementId;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New Element! Storing it...";
-
-		elementId = addElement(name, symbol, elZ, elA);
-
-		storeAddress( address, elementId );
-	}
-	else {
-		qDebug() << "Element node stored already. Getting ID from the memory map...";
-		elementId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "elementId:" << elementId;
-	return elementId;
-}
-
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoShape* pointer, const QString name, const QString parameters)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoShape*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant shapeId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New Shape! Storing it...";
-
-		shapeId = addShape(name, parameters);
-
-		storeAddress( address, shapeId);
-	}
-	else {
-		qDebug() << "Shape node stored already. Getting ID from the memory map...";
-		shapeId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "shapeId:" << shapeId;
-	return shapeId;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoLogVol* pointer, const QString name, const QVariant shapeId, const QVariant materialId)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoLogVol*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant logvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New LogVol! Storing it...";
-
-		logvolId = addLogVol(name, shapeId, materialId);
-
-		storeAddress( address, logvolId );
-	}
-	else {
-		qDebug() << "LogVol node stored already. Getting ID from the memory map...";
-		logvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "logvolId:" << logvolId;
-	return logvolId;
-}
-
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoPhysVol* pointer, const QVariant logvolId, const QVariant parentId, bool isRootVolume)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoPhysVol*) - address:" << pointer << "- is root volume?" << isRootVolume;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant physvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New PhysVol! Storing it...";
-
-		physvolId = addPhysVol(logvolId, parentId, isRootVolume);
-
-		storeAddress( address, physvolId );
-	}
-	else {
-		qDebug() << "PhysVol node stored already. Getting ID from the memory map...";
-		physvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "physvolId:" << physvolId;
-	return physvolId;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoFullPhysVol* pointer, const QVariant logvolId, const QVariant parentId, bool isRootVolume)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoFullPhysVol*) - address:" << pointer << "- is root volume?" << isRootVolume;
-
-	QString address = getAddressStringFromPointer( pointer );
-
-	QVariant physvolId;
-	if (! isAddressStored(address)) {
-		qDebug() << "New FullPhysVol! Storing it...";
-
-		physvolId = addFullPhysVol(logvolId, parentId, isRootVolume);
-
-		storeAddress( address, physvolId );
-	}
-	else {
-		qDebug() << "FullPhysVol node stored already. Getting ID from the memory map...";
-		physvolId = getStoredIdFromAddress(address);
-	}
-	qDebug() << "fullphysvolId:" << physvolId;
-	return physvolId;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoSerialDenominator* pointer, const QString baseName)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoSerialDenominator*) - baseName:" << baseName << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialDenominator! Storing it...";
-
-		id = addSerialDenominator(baseName);
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialDenominator node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoSerialTransformer* pointer, const QVariant functionId, const QVariant volId, const QString volType, const unsigned int copies)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoSerialTransformer*):" << volId.toUInt() << volType << "- n. of copies: " << copies;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialTransformer! Storing it...";
-
-		id = addSerialTransformer(functionId, volId, volType, copies);
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialTransformer node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoXF::Function* pointer, const QString expression)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoXF::Function*)";
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-
-		id = addFunction(expression);
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoXF::Function node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoTransform* pointer, std::vector<double> parameters)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoTransform*)";
-
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-
-		id = addTransform( parameters );
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoTransform node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoAlignableTransform* pointer, std::vector<double> parameters)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoAlignableTransform*)";
-
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New GeoXF::Function! Storing it...";
-
-		id = addAlignableTransform( parameters );
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "GeoAlignableTransform node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-
-QVariant DumpGeoModelActionLocal::storeObj(const GeoNameTag* pointer, const QString name)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeObj(GeoNameTag*) - name:" << name << "address:" << pointer;
-
-	QString address = getAddressStringFromPointer( pointer );
-	QVariant id;
-
-	if (! isAddressStored(address)) {
-		qDebug() << "New SerialDenominator! Storing it...";
-
-		id = addNameTag(name);
-
-		storeAddress( address, id );
-	}
-	else {
-		qDebug() << "SerialDenominator node stored already. Getting ID from the memory map...";
-		id = getStoredIdFromAddress(address);
-	}
-	qDebug() << "ID:" << id;
-	return id;
-}
-
-void DumpGeoModelActionLocal::storeChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int parentCopyN, const unsigned int childPos, const QString childType, const unsigned int childCopyN)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeChildPosition()";
-	addChildPosition(parentId, parentType, childId, parentCopyN, childPos, childType, childCopyN); // FIXME: change the positions of the parameters to a more logical order, like: parentID, parentType, parentCopyN, childPos, ChildType, childId, childCopyN
-	return;
-}
-
-
-unsigned int DumpGeoModelActionLocal::addRecord(std::vector<QStringList>* container, const QStringList values) const
-{
-	container->push_back(values);
-	unsigned int idx = container->size(); // index of pushed element = size after pushing, to match ID starting at 1 in the DB
-	return idx;
-}
-
-QVariant DumpGeoModelActionLocal::addMaterial(const QString name, const QString density, const QString elements)
-{
-	qDebug() << "DumpGeoModelActionLocal::addMaterial(QString*) - name:" << name << "- density:" << density << "- elements:" << elements;
-	std::vector<QStringList>* container = &m_materials;
-	QStringList values;
-	values << name << density << elements;
-	return QVariant( addRecord(container, values) );
-}
-
-QVariant DumpGeoModelActionLocal::addElement(const QString name, const QString symbol, const QString elZ, const QString elA)
-{
-	qDebug() << "DumpGeoModelActionLocal::addElement(QString*) - name:" << name << "- symbol: " << symbol << "- elZ:" << elZ << "- elA:" << elA;
-	std::vector<QStringList>* container = &m_elements;
-	QStringList values;
-	values << name << symbol << elZ << elA;
-	return QVariant( addRecord(container, values) );
-}
-
-QVariant DumpGeoModelActionLocal::addNameTag(const QString name)
-{
-	qDebug() << "DumpGeoModelActionLocal::addNameTag(QString*) - name:" << name;
-	std::vector<QStringList>* container = &m_nameTags;
-	QStringList values;
-	values << name;
-	return QVariant( addRecord(container, values) );
-}
-
-QVariant DumpGeoModelActionLocal::addSerialDenominator(const QString &baseName)
-{
-	qDebug() << "DumpGeoModelActionLocal::addSerialDenominator(QString*) - basename:" << baseName;
-	std::vector<QStringList>* container = &m_serialDenominators;
-	QStringList values;
-	values << baseName;
-	return QVariant( addRecord(container, values) );
-}
-
-
-QVariant DumpGeoModelActionLocal::addFunction(const QString expression)
-{
-	qDebug() << "DumpGeoModelActionLocal::addFunction(QString*) - expression:" << expression;
-	std::vector<QStringList>* container = &m_functions;
-	QStringList values;
-	values << expression;
-	return QVariant( addRecord(container, values) );
-}
-
-
-QVariant DumpGeoModelActionLocal::addAlignableTransform(const std::vector<double> params)
-{
-	qDebug() << "DumpGeoModelActionLocal::addAlignableTransform(QString*)";
-	std::vector<QStringList>* container = &m_alignableTransforms;
-	QStringList values;
-	foreach(double par, params) {
-		values << QString::number(par);
-	}
-	return QVariant( addRecord(container, values) );
-}
-
-
-
-QVariant DumpGeoModelActionLocal::addTransform(const std::vector<double> params)
-{
-	qDebug() << "DumpGeoModelActionLocal::addTransform(QString*)";
-	std::vector<QStringList>* container = &m_transforms;
-	QStringList values;
-	foreach(double par, params) {
-		values << QString::number(par);
-	}
-	return QVariant( addRecord(container, values) );
-}
-
-QString DumpGeoModelActionLocal::getIdFromNodeType( QString nodeType )
-{
-        qDebug() << "getIdFromNodeType(" << nodeType <<")";
-		if (m_memMap_Tables.contains(nodeType))
-			return QString::number(m_memMap_Tables.value(nodeType));
-		else
-			return QString("NULL");
-}
-
-QVariant DumpGeoModelActionLocal::addSerialTransformer(const QVariant &funcId, const QVariant &physvolId, const QString volType, const unsigned int &copies)
-{
-	qDebug() << "DumpGeoModelActionLocal::addSerialTransformer()";
-	std::vector<QStringList>* container = &m_serialTransformers;
-	QString volTypeID = getIdFromNodeType(volType);
-
-	QStringList values;
-	values << funcId.toString() << physvolId.toString() << volTypeID << QString::number(copies);
-
-	return QVariant( addRecord(container, values) );
-}
-
-QVariant DumpGeoModelActionLocal::addShape(const QString &type, const QString &parameters)
-{
-	std::vector<QStringList>* container = &m_shapes;
-	QStringList values;
-	values << type << parameters;
-	return QVariant( addRecord(container, values) );
-}
-
-
-QVariant DumpGeoModelActionLocal::addPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume)
-{
-	std::vector<QStringList>* container = &m_physVols;
-
-	QStringList values;
-	values << logVolId.toString() << parentPhysVolId.toString(); // TODO: we should remove the parent info: it's not complete because the type is missing (PhysVol or FullPhysVol) and it's redundant, because we store the childrenPositions. It's only useful for quick visual debug, by dumping the PhysVol DB table
-
-	unsigned int idx = addRecord(container, values);
-
-	if (isRootVolume) {
-		QStringList rootValues;
-		rootValues << QString::number(idx) << "GeoPhysVol";
-		m_rootVolume = rootValues;
-	}
-	return QVariant(idx);
-}
-
-
-QVariant DumpGeoModelActionLocal::addFullPhysVol(const QVariant &logVolId, const QVariant &parentPhysVolId, bool isRootVolume)
-{
-	std::vector<QStringList>* container = &m_fullPhysVols;
-
-	QStringList values;
-	values << logVolId.toString() << parentPhysVolId.toString(); // TODO: we should remove the parent info: it's not complete because the type is missing (PhysVol or FullPhysVol) and it's redundant, because we store the childrenPositions. It's only useful for quick visual debug, by dumping the PhysVol DB table
-
-	unsigned int idx = addRecord(container, values);
-
-	if (isRootVolume) {
-		QStringList rootValues;
-		rootValues << QString::number(idx) << "GeoFullPhysVol";
-		m_rootVolume = rootValues;
-	}
-	return QVariant(idx);
-}
-
-QVariant DumpGeoModelActionLocal::addLogVol(const QString &name, const QVariant &shapeId, const QVariant &materialId)
-{
-	std::vector<QStringList>* container = &m_logVols;
-	QStringList values;
-	values << name << shapeId.toString() << materialId.toString();
-	return QVariant( addRecord(container, values) );
-}
-
-void DumpGeoModelActionLocal::addChildPosition(const QVariant parentId, const QString parentType, const QVariant childId, const unsigned int parentCopyN, const unsigned int childPos, const QString childType, const unsigned int childCopyN)
-{
-	std::vector<QStringList>* container = &m_childrenPositions;
-
-	QString parentTableID = getIdFromNodeType(parentType);
-	QString childTableID = getIdFromNodeType(childType);
-
-	QStringList values;
-	values << parentId.toString() << parentTableID <<  QString::number(parentCopyN) << QString::number(childPos) << childTableID << childId.toString() << QString::number(childCopyN);
-	addRecord(container, values);
-	return;
-}
-
-
-void DumpGeoModelActionLocal::saveToDB()
-{
-	qDebug() << "DumpGeoModelActionLocal::savetoDB()";
-    std::cout << "saving to file: " << m_dbpath.toStdString() << std::endl;
-
-	m_dbManager->addListOfRecords("GeoMaterial", m_materials);
-	m_dbManager->addListOfRecords("GeoElement", m_elements);
-	m_dbManager->addListOfRecords("GeoNameTag", m_nameTags);
-	m_dbManager->addListOfRecords("GeoAlignableTransform", m_alignableTransforms);
-	m_dbManager->addListOfRecords("GeoTransform", m_transforms);
-	m_dbManager->addListOfRecords("Function", m_functions);
-	m_dbManager->addListOfRecords("GeoSerialTransformer", m_serialTransformers);
-	m_dbManager->addListOfRecords("GeoShape", m_shapes);
-	m_dbManager->addListOfRecords("GeoSerialDenominator", m_serialDenominators);
-	m_dbManager->addListOfRecords("GeoPhysVol", m_physVols);
-	m_dbManager->addListOfRecords("GeoFullPhysVol", m_fullPhysVols);
-	m_dbManager->addListOfRecords("GeoLogVol", m_logVols);
-
-	m_dbManager->addListOfChildrenPositions(m_childrenPositions);
-	m_dbManager->addRootVolume(m_rootVolume);
-
-	return;
-}
-
-
-
-
-
-
-void DumpGeoModelActionLocal::storeAddress(const QString address, QVariant id)
-{
-	qDebug() << "DumpGeoModelActionLocal::storeAddress(" << address << "," << id << ")";
-	m_memMap.insert(address, id);
-}
-
-bool DumpGeoModelActionLocal::isAddressStored(const QString address)
-{
-	qDebug() << "DumpGeoModelActionLocal::isAddressStored(): " << address;
-	//showMemoryMap(); // only for Debug
-	return m_memMap.contains(address);
-}
-
-
-QVariant DumpGeoModelActionLocal::getStoredIdFromAddress(QString address)
-{
-	qDebug() << "DumpGeoModelActionLocal::getStoredIdFromAddress(): " << address;
-	return m_memMap.value(address);
-}
-
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoMaterial* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoMaterial*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoElement* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoElement*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoShape* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoShape*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoLogVol* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoLogVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoPhysVol* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoPhysVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoVPhysVol* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoVPhysVol*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-// get pointer string
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoSerialDenominator* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoSerialDenominator*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoSerialTransformer* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoSerialTransformer*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoXF::Function* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoXF::Function*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoTransform* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoTransform*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelActionLocal::getAddressStringFromPointer(const GeoNameTag* pointer)
-{
-	qDebug() << "DumpGeoModelActionLocal::getAddressStringFromPointer(GeoNameTag*)";
-	std::ostringstream oss;
-	oss << pointer;
-	return getQStringFromOss(oss);
-}
-
-QString DumpGeoModelActionLocal::getQStringFromOss(std::ostringstream &oss)
-{
-	qDebug() << "DumpGeoModelActionLocal::getQStringFromOss()";
-	std::string addr = oss.str();
-	QString address = QString::fromStdString(addr);
-	qDebug() << "address string:" << address;
-	return address;
-}
-
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/WriteGeoModelAction.cxx.oldSqlite b/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/WriteGeoModelAction.cxx.oldSqlite
deleted file mode 100644
index 91aee8c405f539bba6e13f4a6c1774ef50132ffa..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/GeoWrite/src/WriteGeoModelAction.cxx.oldSqlite
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-
-// local includes
-#include "GeoWrite/WriteGeoModelAction.h"
-
-// C++ includes
-#include <sstream>
-
-// Qt includes
-//#include <QtSql>
-#include <QtDebug>
-
-
-WriteGeoModelAction::WriteGeoModelAction (std::ostream &o, MemMap& m, sqlite3 *db) // TODO: remove db from signature
-: m_nameTag(NULL),
-  m_serialDenominator(NULL),
-  m_idTag(NULL),
-  m_transformState(true),
-  m_volumeState(true),
-  m_nametagState(true),
-  m_serialDenominatorState(true),
-  m_serialTransformerState(true),
-  m_identifierState(true),
-  m_o(o),
-  m_map(m),
-  //m_db(db),
-  m_id(0),
-  m_indented(false)
-{
-
-	qDebug() << "WriteGeoModelAction::constructor(). Start...";
-
-//	m_db = QSqlDatabase::addDatabase("QSQLITE");
-////	    m_db.setDatabaseName(path);
-//	    m_db.setDatabaseName("test_Qt.db");
-//
-//	    if (!m_db.open())
-//	    {
-//	        qDebug() << "Error: connection with database fail";
-//	    }
-//	    else
-//	    {
-//	        qDebug() << "Database: connection ok";
-//	    }
-
-
-	//	/* Open database */
-	//	rc = sqlite3_open("test.db", &m_db);
-	//
-	//	if( rc ){
-	//		fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
-	//		exit(0);
-	//	}else{
-	//		fprintf(stderr, "Opened database successfully\n");
-	//	}
-	//
-	//	/* Create the database table */
-	//	createTables();
-
-	// initialize the DB
-	//initDB();
-
-	//loadTestData();
-
-	qDebug() << "WriteGeoModelAction::constructor(). DONE.";
-}
-
-
-WriteGeoModelAction::~WriteGeoModelAction() {
-	qDebug() << "WriteGeoModelAction::destructor().";
-//	if (m_db.isOpen())
-//	    {
-//	        m_db.close();
-//	    }
-}
-
-
-bool WriteGeoModelAction::isOpen() const
-{
-    return m_db.isOpen();
-}
-
-
-//## Other Operations (implementation)
-
-
-void WriteGeoModelAction::handleTransform (const GeoTransform *xform)
-{
-	qDebug() << "WriteGeoModelAction::handleTransform(GeoTransform*)";
-
-	m_pendingTransformList.push_back(xform);
-	if (m_transformState) {
-		indent();
-		m_o << "TRANSFORM (" << xform << ") + ";
-	}
-}
-
-void WriteGeoModelAction::handlePhysVol (const GeoPhysVol *vol)
-{
-	qDebug() << "WriteGeoModelAction::handlePhysVol(GeoPhysVol*)";
-
-	const std::string name = vol->getLogVol()->getName();
-
-	const GeoLogVol* logVol = vol->getLogVol();
-
-
-	const GeoMaterial * mat = vol->getLogVol()->getMaterial();
-	const std::string matName = mat->getName();
-
-	const GeoShape * shape = vol->getLogVol()->getShape();
-	const std::string shapeType = shape->type();
-
-	unsigned int length = getPath()->getLength();
-
-	if (m_volumeState) {
-		indent();
-		m_o << "VOLUME(" << vol << ":GeoPhysVol:" << vol->getLogVol()->getName() << ":" << shapeType << ":" << matName << ":" << length << ")" << std::endl;
-	}
-	m_pendingTransformList.erase(m_pendingTransformList.begin(),m_pendingTransformList.end());
-	m_indented=false;
-
-
-
-	//	std::ostringstream oss;
-	//	oss << &vol;
-	//	std::string address = oss.str();
-	//
-	//	// check if present in the map; if not, add it
-	//	if ( ! (m_map.count(address) > 0) ) {
-	//		m_map.emplace(address, 1);
-	//	}
-
-
-	// check if present in the map; if not, add it and then persistify it
-//	if ( storeObj(vol) )
-//		persistifyObj(vol);
-
-}
-
-void WriteGeoModelAction::handleFullPhysVol (const GeoFullPhysVol *vol)
-{
-	qDebug() << "WriteGeoModelAction::handleFullPhysVol(GeoFullPhysVol*)";
-
-	if (m_volumeState) {
-
-		const std::string name = vol->getLogVol()->getName();
-		const std::string matName = vol->getLogVol()->getMaterial()->getName();
-		const std::string shapeType = vol->getLogVol()->getShape()->type();
-		unsigned int length = getPath()->getLength();
-
-		indent();
-		m_o << "VOLUME(" << vol << ":GeoFullPhysVol:" << name << ":" << shapeType << ":" << matName << ":" << length << ")" << std::endl;
-	}
-	m_pendingTransformList.erase(m_pendingTransformList.begin(),m_pendingTransformList.end());
-	m_indented=false;
-}
-
-void WriteGeoModelAction::handleNameTag (const GeoNameTag *nameTag)
-{
-	qDebug() << "WriteGeoModelAction::handleNameTag(GeoNameTag*)";
-
-	if (m_nametagState) {
-		indent();
-		m_o << "NAMETAG(" << nameTag << ":" << nameTag->getName() << ") + ";
-	}
-}
-
-void WriteGeoModelAction::handleSerialDenominator (const GeoSerialDenominator *sD)
-{
-	qDebug() << "WriteGeoModelAction::handleSerialDenominator(GeoSerialDenominator*)";
-
-	if (m_nametagState) {
-		indent();
-		m_o << "SERIAL DENOMINATOR(" << sD << ":" << sD->getBaseName() << ") + \n";
-	}
-	m_indented=false;
-}
-
-void WriteGeoModelAction::handleSerialTransformer (const GeoSerialTransformer  *sT)
-{
-	qDebug() << "WriteGeoModelAction::handleSerialTransformer(GeoSerialTransformer*)";
-
-	if (m_volumeState) {
-
-		const GeoXF::Function * func = sT->getFunction();
-
-		indent();
-		m_o << "SERIAL_TRANSFORMER: " << sT->getNCopies() << " PARAMETRIZED VOLUMES(" << sT << ":" << sT->getVolume()->getLogVol()->getName() << ":" << func << ")" << std::endl;
-	}
-	m_pendingTransformList.erase(m_pendingTransformList.begin(),m_pendingTransformList.end());
-	m_indented=false;
-}
-
-void WriteGeoModelAction::handleIdentifierTag (const GeoIdentifierTag *idTag)
-{
-	qDebug() << "WriteGeoModelAction::handleIdentifierTag(GeoIdentifierTag*)";
-
-	if (m_identifierState) {
-		indent();
-		m_o << "NAME(" << idTag << ":" << idTag->getIdentifier() << ") + ";
-	}
-}
-//void WriteGeoModelAction::handleGeoShape (const GeoShape *shape)
-//{
-//	//## begin WriteGeoModelAction::handleIdentifierTag%3FB027EA0197.body preserve=yes
-//	if (m_identifierState) {
-//		indent();
-//		m_o << "NAME(" << idTag << ":" << idTag->getIdentifier() << ") + ";
-//	}
-//	//## end WriteGeoModelAction::handleIdentifierTag%3FB027EA0197.body
-//}
-
-void WriteGeoModelAction::setNotification (Type type, bool state)
-{
-	qDebug() << "WriteGeoModelAction::setNotification()";
-
-	std::cout << "setNotification()" << std::endl;
-
-	if (type==TRANSFORM) {
-		m_transformState=state;
-	}
-	else if (type==VOLUME) {
-		m_volumeState=state;
-	}
-	else if (type==NAMETAG) {
-		m_nametagState=state;
-	}
-	else if (type==IDENTIFIERTAG) {
-		m_identifierState=state;
-	}
-	else if (type==IDENTIFIERTAG) {
-		m_identifierState=state;
-	}
-}
-
-void WriteGeoModelAction::indent ()
-{
-	if (!m_indented) {
-		m_indented=true;
-		for (size_t i=0;i<getPath()->getLength(); i++) {
-			m_o << "   ";
-		}
-	}
-}
-
-
-int WriteGeoModelAction::storeObj(const GeoShape* pointer)
-{
-	qDebug() << "WriteGeoModelAction::storeObj(GeoShape*)";
-
-	std::ostringstream oss;
-	oss << &pointer;
-	std::string address = oss.str();
-
-	return storeAddress(address);
-}
-
-int WriteGeoModelAction::storeObj(const GeoLogVol* pointer)
-{
-	qDebug() << "WriteGeoModelAction::storeObj(GeoLogVol*)";
-
-	std::ostringstream oss;
-	oss << &pointer;
-	std::string address = oss.str();
-
-	return storeAddress(address);
-}
-
-int WriteGeoModelAction::storeObj(const GeoMaterial* pointer)
-{
-	qDebug() << "WriteGeoModelAction::storeObj(GeoMaterial*)";
-
-	std::ostringstream oss;
-	oss << &pointer;
-	std::string address = oss.str();
-
-	return storeAddress(address);
-}
-
-int WriteGeoModelAction::storeObj(const GeoGraphNode* pointer)
-{
-	qDebug() << "WriteGeoModelAction::storeObj(GeoGraphNode*)";
-
-	std::ostringstream oss;
-	oss << &pointer;
-	std::string address = oss.str();
-
-	return storeAddress(address);
-}
-
-int WriteGeoModelAction::storeAddress(const std::string address)
-{
-	qDebug() << "WriteGeoModelAction::storeAddress(): " << address.c_str();
-
-	// check if present in the map; if not, add it
-	if ( ! (m_map.count(address) > 0) ) {
-		++m_id;
-		m_map.emplace(address, m_id);
-
-		return m_id; // the object has been added to the map
-	}
-
-	int objId = 0;
-	//	m_map.find( address )
-	//    std::unordered_map<std::string, int>::const_iterator got = m_map.find (input);
-	MemMap::const_iterator got = m_map.find ( address );
-
-	if ( got == m_map.end() ) {
-		std::cout << "not found";
-		return -1; // ERROR!!
-	}
-	else {
-		std::cout << got->first << " is " << got->second;
-		objId = got->second;
-	}
-	return objId;
-
-}
-
-
-void WriteGeoModelAction::persistifyObj(const GeoPhysVol * pointer)
-{
-	qDebug() << "WriteGeoModelAction::persistifyObj()";
-
-
-	const std::string name = pointer->getLogVol()->getName();
-
-	const GeoLogVol* logVol = pointer->getLogVol();
-
-	const GeoMaterial * mat = pointer->getLogVol()->getMaterial();
-	const std::string matName = mat->getName();
-
-	const GeoShape * shape = pointer->getLogVol()->getShape();
-	const std::string shapeType = shape->type();
-
-	int matId = storeObj(mat);
-	if ( matId > 0 ) {
-
-	}
-
-
-	if ( storeObj(logVol) > 0 ) {
-
-		// CREATE RECORD
-
-//		/* Create SQL statement: INSERT */
-//		std::ostringstream os;
-//		os << "INSERT INTO GEOMETRY (ID,NAME,MATERIAL,SHAPE) ";
-//		os << "VALUES (" << m_id << ",'" << name << "','" << matName << "','" << shapeType << "'); ";
-//
-//		std::string s = os.str();
-//		sql = s.c_str();
-//
-//		/* Execute SQL statement */
-//		rc = sqlite3_exec(m_db, sql, callback, 0, &zErrMsg);
-//		if( rc != SQLITE_OK ){
-//			fprintf(stderr, "SQL error: %s\n", zErrMsg);
-//			sqlite3_free(zErrMsg);
-//		}else{
-//			fprintf(stdout, "Records created successfully\n");
-//		}
-	}
-}
-
-
-
-// FETCH ALL RECORDS
-QSqlError WriteGeoModelAction::fetchAllRecords()
-{
-	qDebug() << "WriteGeoModelAction::fetchAllRecords()";
-
-//	openDB();
-
-//	// create and open a default connection to a SQLite database
-//		qDebug() << "creating the 'default' DB connection...";
-//		m_db = QSqlDatabase::addDatabase("QSQLITE");
-//		m_db.setDatabaseName("test_Qt.db");
-//		qDebug() << "opening the DB...";
-//		if (!m_db.open()) {
-//			qWarning() << "DB file could be opened!";
-//			return m_db.lastError();
-//		}
-
-	QSqlQuery query;
-	query.exec("SELECT * FROM Material");
-
-	while (query.next()) {
-		QString name = query.value(0).toString();
-		qDebug() << name;
-		//		int salary = query.value(1).toInt();
-		//		qDebug() << name << salary;
-	}
-
-	query = QSqlQuery("SELECT * FROM Material");
-	int fieldNo = query.record().indexOf("name");
-	while (query.next()) {
-		//	        QString country = query.value(fieldNo).toString();
-		//	        doSomething(country);
-		qDebug() << query.record();
-	}
-
-//	m_db.close();
-
-//	closeDB();
-
-}
-
-//// FETCH ALL RECORDS
-//void WriteGeoModelAction::fetchAllRecords()
-//{
-//	/* Create SQL statement: FETCH */
-//	sql = "SELECT * from GEOMETRY";
-//
-//	/* Execute SQL statement */
-//	rc = sqlite3_exec(m_db, sql, callback, (void*)data, &zErrMsg);
-//	if( rc != SQLITE_OK ){
-//		fprintf(stderr, "SQL error: %s\n", zErrMsg);
-//		sqlite3_free(zErrMsg);
-//	}else{
-//		fprintf(stdout, "FETCH Operation done successfully\n\n");
-//	}
-//}
-
-
-//int WriteGeoModelAction::callback(void *NotUsed, int argc, char **argv, char **azColName){
-//	int i;
-//	for(i=0; i<argc; i++){
-//		printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
-//	}
-//	printf("\n");
-//	return 0;
-//}
-
-//// CREATE TABLES
-//void WriteGeoModelAction::createTables()
-//{
-//	/* Create SQL statements: CREATE */
-//
-//	// create 'LogVol' table
-//	sql = "CREATE TABLE LogVol (" \
-//			"ID       INTEGER PRIMARY KEY UNIQUE NOT NULL," \
-//			"SHAPE            REFERENCES Shape (ID)," \
-//			"MATERIAL         REFERENCES Material (ID), " \
-//			"NAME     STRING  NOT NULL DEFAULT AnonLogVol " \
-//			");";
-//	if( executeSQL(sql) ) std::cout << "LogVol table created successfully." << std::endl;
-//	else std::cout << "ERROR while creating the table LogVol" << std::endl;
-//
-//	// create 'PhysVol' table
-//	sql = "CREATE TABLE PhysVol ("\
-//			"ID     INTEGER PRIMARY KEY UNIQUE NOT NULL,"\
-//			"LOGVOL INTEGER NOT NULL REFERENCES LogVol (ID),"\
-//			"PARENT INTEGER REFERENCES PhysVol (ID)"\
-//			");";
-//	if( executeSQL(sql) ) std::cout << "PhysVol table created successfully." << std::endl;
-//	else std::cout << "ERROR while creating the table PhysVol" << std::endl;
-//
-//	// create 'Material' table
-//	sql = "CREATE TABLE Material (" \
-//			"ID          PRIMARY KEY,"\
-//			"NAME STRING DEFAULT Air NOT NULL"\
-//			");";
-//	if( executeSQL(sql) ) std::cout << "Material table created successfully." << std::endl;
-//	else std::cout << "ERROR while creating the table Material" << std::endl;
-//
-//	// create 'Shape' table
-//	sql = "CREATE TABLE Shape ("\
-//			"ID    INTEGER PRIMARY KEY,"\
-//			"SHAPE STRING  NOT NULL"\
-//			");";
-//	if( executeSQL(sql) ) std::cout << "Shape table created successfully." << std::endl;
-//	else std::cout << "ERROR while creating the table Shape" << std::endl;
-//
-//}
-
-//bool WriteGeoModelAction::executeSQL(const char * sql)
-//{
-//	/* Execute the input SQL statement */
-//	rc = sqlite3_exec(m_db, sql, callback, 0, &zErrMsg);
-//	if( rc != SQLITE_OK ){
-//		fprintf(stderr, "SQL error: %s\n", zErrMsg);
-//		sqlite3_free(zErrMsg);
-//		return false;
-//	}
-//	//else{
-//	//	fprintf(stdout, "SQL query executed successfully\n");
-//	//}
-//	return true;
-//}
-
-
-//QSqlError WriteGeoModelAction::openDB()
-//{
-//	qDebug() << "WriteGeoModelAction::openDB()";
-//
-////// create and open a default connection to a SQLite database
-////	qDebug() << "creating the 'default' DB connection...";
-////	m_db = QSqlDatabase::addDatabase("QSQLITE");
-////	m_db.setDatabaseName("test_Qt.db");
-////	qDebug() << "opening the DB...";
-////	if (!m_db.open()) {
-////		qWarning() << "DB file could be opened!";
-////		return m_db.lastError();
-////	}
-//
-//
-////	QUuid uniqueId = QUuid::createUuid();
-////	_db = new QSqlDatabase();
-////	*_db = QSqlDatabase::addDatabase("QMYSQL", uniqueId.toString());
-////	db->setHostName(...);
-////	db->setDatabaseName(...);
-////	db->setUserName(...);
-////	db->setPassword(...);
-//
-//	_db = new QSqlDatabase();
-//	*_db = QSqlDatabase::addDatabase("QSQLITE");
-//	_db->setDatabaseName("test_Qt.db");
-//	qDebug() << "opening the DB...";
-//	if (!_db->open()) {
-//		qWarning() << "DB file could be opened!";
-//		return _db->lastError();
-//	}
-//
-//}
-//void WriteGeoModelAction::closeDB()
-//{
-//	_db->close();
-//	delete _db;
-////	QSqlDatabase::removeDatabase(_db->connectionName());
-//	QSqlDatabase::removeDatabase("test_Qt.db");
-//}
-
-
-
-
-QSqlError WriteGeoModelAction::initDB()
-{
-	qDebug() << "WriteGeoModelAction::initDB()";
-
-	// create and open a default connection to a SQLite database
-	qDebug() << "creating the 'default' DB connection...";
-	m_db = QSqlDatabase::addDatabase("QSQLITE");
-	m_db.setDatabaseName("test_Qt.db");
-	qDebug() << "opening the DB...";
-	if (!m_db.open()) {
-		qWarning() << "DB file could be opened!";
-		return m_db.lastError();
-	}
-
-//	openDB();
-
-	// check if DB is empty
-	qDebug() << "checking existing tables...";
-    QSqlDatabase db = QSqlDatabase::database();
-	QStringList tables = db.tables();
-	if (tables.contains("LogVols", Qt::CaseInsensitive)
-			&& tables.contains("PhysVols", Qt::CaseInsensitive)
-			&& tables.contains("Materials", Qt::CaseInsensitive)
-			&& tables.contains("Shapes", Qt::CaseInsensitive)
-		) {
-		qDebug() << "tables are present already. Skipping tables creation.";
-//		closeDB();
-		return QSqlError();
-	}
-
-	// create tables
-	qDebug() << "creating tables...";
-	QSqlQuery q;
-	if (!q.exec(QLatin1String("create table LogVols(id integer primary key, name varchar, shape integer, material integer)")))
-		return q.lastError();
-	if (!q.exec(QLatin1String("create table PhysVols(id integer primary key, logvol integer not null, parent integer)")))
-		return q.lastError();
-	if (!q.exec(QLatin1String("create table Materials(id integer primary key, name varchar)")))
-		return q.lastError();
-	if (!q.exec(QLatin1String("create table Shapes(id integer primary key, name varchar)")))
-		return q.lastError();
-	qDebug() << "DONE. Tables created successfully.";
-
-	// load the DB with test data, for debug
-//	loadTestData();
-
-//	_db->close();
-//	closeDB();
-
-}
-
-QSqlError WriteGeoModelAction::loadTestData()
-{
-
-	qDebug() << "WriteGeoModelAction::loadTestData()";
-
-	// create test data
-	QSqlQuery q;
-
-	qDebug() << "Loading Shapes...";
-	if (!q.prepare(QLatin1String("insert into Shapes(name) values(?)")))
-		return q.lastError();
-	QVariant boxId    = addShape(q, QLatin1String("Box"));
-	QVariant coneId   = addShape(q, QLatin1String("Cone"));
-	QVariant sphereId = addShape(q, QLatin1String("Sphere"));
-
-	qDebug() << "Loading Materials...";
-	if (!q.prepare(QLatin1String("insert into Materials(name) values(?)")))
-		return q.lastError();
-	QVariant airId  = addMaterial(q, QLatin1String("Air"));
-	QVariant ironId = addMaterial(q, QLatin1String("Iron"));
-	QVariant leadId = addMaterial(q, QLatin1String("Lead"));
-
-	qDebug() << "Loading LogVols...";
-	if (!q.prepare(QLatin1String("insert into LogVols(name, shape, material) values(?, ?, ?)")))
-		return q.lastError();
-	QVariant worldLogId = addLogVol(q, QLatin1String("WorldLog"), boxId, airId);
-	QVariant toyLogId  = addLogVol(q, QLatin1String("ToyLog and Empire"), coneId, leadId);
-
-	qDebug() << "Loading PhysVols...";
-	if (!q.prepare(QLatin1String("insert into PhysVols(logvol, parent) values(?, ?)")))
-		return q.lastError();
-	QVariant rootPhysId = addPhysVol(q, worldLogId, QVariant()); // no parent
-	QVariant childPhysId = addPhysVol(q, toyLogId, rootPhysId);
-
-	qDebug() << "DONE. Created and loaded test data.";
-}
-
-
-QVariant WriteGeoModelAction::addPhysVol(QSqlQuery &q, const QVariant &logVolId,
-             const QVariant &parentPhysVolId)
-{
-	qDebug() << "WriteGeoModelAction::addPhysVol()";
-    q.addBindValue(logVolId);
-    q.addBindValue(parentPhysVolId);
-    q.exec();
-    return q.lastInsertId();
-}
-
-QVariant WriteGeoModelAction::addLogVol(QSqlQuery &q, const QString &name, const QVariant &shapeId,
-             const QVariant &materialId)
-{
-	qDebug() << "WriteGeoModelAction::addLogVol()";
-    q.addBindValue(name);
-    q.addBindValue(shapeId);
-    q.addBindValue(materialId);
-    q.exec();
-    return q.lastInsertId();
-}
-
-QVariant WriteGeoModelAction::addMaterial(QSqlQuery &q, const QString &name)
-{
-	qDebug() << "WriteGeoModelAction::addMaterial()";
-    q.addBindValue(name);
-    q.exec();
-    return q.lastInsertId();
-}
-
-QVariant WriteGeoModelAction::addShape(QSqlQuery &q, const QString &name)
-{
-	qDebug() << "WriteGeoModelAction::addShape()";
-    q.addBindValue(name);
-    q.exec();
-    return q.lastInsertId();
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/CMakeLists.txt b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/CMakeLists.txt
deleted file mode 100644
index de2daf1c463f60e87cfc9313394497c84037fdef..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-################################################################################
-# Package: TFPersistification
-################################################################################
-
-# Declare the package name:
-atlas_subdir( TFPersistification )
-
-# Declare the package's dependencies:
-# TODO: we can skip the dependency on GeoPrimitives when we convert all methods to Eigen (GeoTrf::Transform3D)
-atlas_depends_on_subdirs( PUBLIC
-                          DetectorDescription/GeoPrimitives
-                          )
-                          
-# External dependencies:
-find_package( CLHEP ) # TODO: we can skip the dependency on CLHEP when we convert all methods to Eigen (GeoTrf::Transform3D)
-find_package( Eigen )
-find_package( GeoModelCore )
-
-# Component(s) in the package:
-atlas_add_library( TFPersistification
-                   src/*.cpp
-                   TFPersistification/*.h
-                   PUBLIC_HEADERS TFPersistification
-                   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${GEOMODELCORE_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${CLHEP_LIBRARIES} ${GEOMODELCORE_LIBRARIES} GeoPrimitives )
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ACosIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ACosIO.h
deleted file mode 100644
index 9c0c574c2c2291ea22ef982f0eb827818bf81aef..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ACosIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _ACosIO_h_
-#define _ACosIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class ACosReader: public GenFunctionReader {
-
- public:
-  
-  ACosReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class ACosRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ACosRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ASinIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ASinIO.h
deleted file mode 100644
index dedc5ff8ac9ac1e5b109288eff77044df9a0484a..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ASinIO.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _ASinIO_h_
-#define _ASinIO_h_
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class ASinReader: public GenFunctionReader {
-
- public:
-  
-  ASinReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class ASinRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ASinRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ATanIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ATanIO.h
deleted file mode 100644
index 526d8b66f727fafa4021f065833179e1db9a98b0..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ATanIO.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _ATanIO_h_
-#define _ATanIO_h_
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class ATanReader: public GenFunctionReader {
-
- public:
-  
-  ATanReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class ATanRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ATanRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/AbsIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/AbsIO.h
deleted file mode 100644
index 09b351c5c6257a134a3ac169dee572d3715ec794..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/AbsIO.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _AbsIO_h_
-#define _AbsIO_h_
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class AbsReader: public GenFunctionReader {
-
- public:
-  
-  AbsReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class AbsRecorder: public GenFunctionRecorder {
-
- public:
-  
-  AbsRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ArrayFunctionIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ArrayFunctionIO.h
deleted file mode 100644
index f5ff56c25d5085abcbbb3371dd16a0c81a377426..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ArrayFunctionIO.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _ArrayFunctionIO_h_
-#define _ArrayFunctionIO_h_
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class ArrayFunctionReader: public GenFunctionReader {
-
- public:
-  
-  ArrayFunctionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class ArrayFunctionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ArrayFunctionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/CosIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/CosIO.h
deleted file mode 100644
index b507f13e17a63f9aac4b84b3c94d672ecc790719..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/CosIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _CosIO_h_
-#define _CosIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class CosReader: public GenFunctionReader {
-
- public:
-  
-  CosReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class CosRecorder: public GenFunctionRecorder {
-
- public:
-  
-  CosRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/FixedConstantIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/FixedConstantIO.h
deleted file mode 100644
index 84ecbe10e6f6eb23a671b9256eb22e6eee1fe426..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/FixedConstantIO.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef _FixedConstantIO_h_
-#define _FixedConstantIO_h_
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class FixedConstantReader: public GenFunctionReader {
-
- public:
-  
-  FixedConstantReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class FixedConstantRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FixedConstantRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionInterpreter.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionInterpreter.h
deleted file mode 100644
index 232775518d843c32637d726504f03507816eb926..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionInterpreter.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef _GENFUNCTIONINTERPRETER_H_
-#define _GENFUNCTIONINTERPRETER_H_
-#include <map>
-#include <string>
-#include <typeinfo>
-#include <sstream>
-#include <memory>
-
-//
-// Forward definition of "Genfunction"
-//
-namespace GeoGenfun {
-  class AbsFunction;
-}
-
-//
-// Forward definition of GenFunctionRecorder;
-//
-class GenFunctionReader;
-
-typedef std::unique_ptr<const GeoGenfun::AbsFunction> GFPTR;
-
-class GenFunctionInterpreter {
-
- public:
-
-  // Constructor
-  GenFunctionInterpreter();
-
-  // Destructor
-  ~GenFunctionInterpreter();
-  
-  // Registers a reader. Assumes ownership and will delete
-  void add(const std::string &str, const GenFunctionReader * reader); 
-
-  // Interprets a string.  
-  GFPTR interpret(std::string::const_iterator begin,
-		  std::string::const_iterator end  ) const;
-
- private:
-
-  // Store the actual interpreters, map them into the type name
-  std::map<std::string, const GenFunctionReader *> m_readerMap;
-
-  // Deleted methods:
-  GenFunctionInterpreter(const GenFunctionInterpreter &)               = delete;
-  GenFunctionInterpreter & operator = (const GenFunctionInterpreter &) = delete;
-  
-};
-
-
-#endif
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionPersistifier.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionPersistifier.h
deleted file mode 100644
index 49fede5c8d8e516d9308dd92456001e6f1dc8eb7..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionPersistifier.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef _GENPERSISTIFIER_H_
-#define _GENPERSISTIFIER_H_
-#include <map>
-#include <string>
-#include <typeinfo>
-#include <sstream>
-
-//
-// Forward declaration of GeoGenfun::AbsFunction
-//
-namespace GeoGenfun {
-  class AbsFunction;
-}
-//
-// Forward definition of GenFunctionRecorder;
-//
-class GenFunctionRecorder;
-
-
-
-class GenFunctionPersistifier {
-
- public:
-
-  // Constructor
-  GenFunctionPersistifier();
-
-  // Destructor
-  ~GenFunctionPersistifier();
-
-  // Registers a recorder. Assumes ownership and will delete.
-  void add(const std::type_info & tInfo, const GenFunctionRecorder * recorder);
-
-  // Persistifies the function.  Result goes into the coded string.
-  void persistify(const GeoGenfun::AbsFunction & f) const;
-
-  // Retrieves the coded string after the persistify operation:
-  const std::string & getCodedString() const;
-
-  // Retrieves the stream used to build the expression:
-  std::ostringstream & getStream() const;
-
- private:
-
-  // Store the actual recorders, map them into the type name
-  std::map<std::string, const GenFunctionRecorder *> m_recorderMap;
-
-  // Here is the result:
-  mutable std::string m_codedString;
-
-  // An ostringstream is used to build the coded string:
-  mutable std::ostringstream* m_stream;
-
-  // Deleted methods:
-  GenFunctionPersistifier(const GenFunctionPersistifier &)               = delete;
-  GenFunctionPersistifier & operator = (const GenFunctionPersistifier &) = delete;
-
-};
-
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionReader.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionReader.h
deleted file mode 100644
index e672a1fd05b8176521d9aa885de94e5f53bc97bd..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionReader.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _GENFUNCTIONREADER_H_
-#define _GENFUNCTIONREADER_H_
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-#include <memory>
-#include <tuple>
-#include <string>
-
-typedef std::tuple<std::string::const_iterator, std::string::const_iterator> BeginEnd;
-
-typedef std::unique_ptr<const GeoGenfun::AbsFunction> GFPTR;
-//
-// Forward definition of GenFunctionInterpreter;
-//
-class GenFunctionInterpreter;
-
-class GenFunctionReader {
-
- public:
-
-  // Constructor.  Keep a pointer to the interpreter for purposes of recusion.
-  GenFunctionReader(const std::string & name, GenFunctionInterpreter *interpreter);
-
-  // Destructor
-  virtual ~GenFunctionReader();
-
-  // Execute
-  virtual GFPTR execute(std::string::const_iterator , std::string::const_iterator) const=0;
-
-  // Access to the interpreter:
-  const GenFunctionInterpreter *getInterpreter() const;
-
-  // Access to the input string name;
-  const std::string & getName() const;
-  
- protected:
-
-  // Some of the subclasses require two arguments, separated by a |. This
-  // splits the argument into its two pieces:
-  std::string::const_iterator split(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-  private:
-
-  // Name of the text string found on the input:
-  const std::string                                           m_name;
-
-  // A pointer to the interpreter:
-  const GenFunctionInterpreter                               *m_interpreter;
-
-  // Deleted operations:
-  GenFunctionReader(const GenFunctionReader &)               = delete;
-  GenFunctionReader & operator = (const GenFunctionReader &) = delete;
-
-  
-};
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionRecorder.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionRecorder.h
deleted file mode 100644
index a76b756d36e7ef0ca71dd200ec8709f4504c4c9e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenFunctionRecorder.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _GENFUNCTIONRECORDER_H_
-#define _GENFUNCTIONRECORDER_H_
-
-#include  <typeinfo>
-
-
-namespace GeoGenfun {
-  class AbsFunction;
-}
-
-
-//
-// Forward definition of GenFunctionPersistifier;
-//
-class GenFunctionPersistifier;
-
-class GenFunctionRecorder {
-
- public:
-
-  // Constructor.  Keep a pointer to the persistifier for purposes of recusion.
-  GenFunctionRecorder(const std::type_info & info, GenFunctionPersistifier *persistifier);
-
-  // Destructor:
-  virtual ~GenFunctionRecorder();
-
-  // Execute
-  virtual void execute(const GeoGenfun::AbsFunction & transfunction) const=0;
-
-  // Access to the persistifier:
-  const GenFunctionPersistifier *getPersistifier() const;
-
- private:
-
-  // A pointer to the persistifier:
-  const GenFunctionPersistifier                               *m_persistifier;
-
-  // Deleted operations:
-  GenFunctionRecorder(const GenFunctionRecorder &)               = delete;
-  GenFunctionRecorder & operator = (const GenFunctionRecorder &) = delete;
-
-
-};
-
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenfunIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenfunIO.h
deleted file mode 100644
index 05f8e41f51915cdebf69044288ed19b196f81b04..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/GenfunIO.h
+++ /dev/null
@@ -1,240 +0,0 @@
-#ifndef _GenfunIO_h_
-#define _GenfunIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-
-class ConstTimesFunctionReader: public GenFunctionReader {
-
- public:
-  
-  ConstTimesFunctionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-class ConstTimesFunctionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ConstTimesFunctionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-
-class ConstPlusFunctionReader: public GenFunctionReader {
-
- public:
-  
-  ConstPlusFunctionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class ConstPlusFunctionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ConstPlusFunctionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class ConstMinusFunctionReader: public GenFunctionReader {
-
- public:
-  
-  ConstMinusFunctionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class ConstMinusFunctionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ConstMinusFunctionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class ConstOverFunctionReader: public GenFunctionReader {
-
- public:
-  
-  ConstOverFunctionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class ConstOverFunctionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ConstOverFunctionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-
-class FunctionCompositionReader: public GenFunctionReader {
-
- public:
-  
-  FunctionCompositionReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionCompositionRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionCompositionRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-
-class FunctionNegationReader: public GenFunctionReader {
-
- public:
-  
-  FunctionNegationReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionNegationRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionNegationRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class FunctionNoopReader: public GenFunctionReader {
-
- public:
-  
-  FunctionNoopReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionNoopRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionNoopRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class FunctionProductReader: public GenFunctionReader {
-
- public:
-  
-  FunctionProductReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionProductRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionProductRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class FunctionQuotientReader: public GenFunctionReader {
-
- public:
-  
-  FunctionQuotientReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionQuotientRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionQuotientRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-
-class FunctionSumReader: public GenFunctionReader {
-
- public:
-  
-  FunctionSumReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionSumRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionSumRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-class FunctionDifferenceReader: public GenFunctionReader {
-
- public:
-  
-  FunctionDifferenceReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
-  
-};
-
-
-class FunctionDifferenceRecorder: public GenFunctionRecorder {
-
- public:
-  
-  FunctionDifferenceRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-
-
-class VariableReader: public GenFunctionReader {
-
- public:
-  
-  VariableReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class VariableRecorder: public GenFunctionRecorder {
-
- public:
-  
-  VariableRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ModIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ModIO.h
deleted file mode 100644
index cec3e1057b3a64f977d9066018782159e40fd69e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/ModIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _ModIO_h_
-#define _ModIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class ModReader: public GenFunctionReader {
-
- public:
-  
-  ModReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class ModRecorder: public GenFunctionRecorder {
-
- public:
-  
-  ModRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/RectangularIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/RectangularIO.h
deleted file mode 100644
index dd68430562e09e9dc6b0f25e43589aaaa1d2baaf..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/RectangularIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _RectangularIO_h_
-#define _RectangularIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class RectangularReader: public GenFunctionReader {
-
- public:
-  
-  RectangularReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class RectangularRecorder: public GenFunctionRecorder {
-
- public:
-  
-  RectangularRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SinIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SinIO.h
deleted file mode 100644
index 02990ca51672d08ea3647ec8a205d5cd19f86c1c..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SinIO.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _SinIO_h_
-#define _SinIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-
-class SinReader: public GenFunctionReader {
-
- public:
-  
-  SinReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class SinRecorder: public GenFunctionRecorder {
-
- public:
-  
-  SinRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SqrtIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SqrtIO.h
deleted file mode 100644
index 7c7f9ecc09d82be0cf4428472fcfa0f1574fe42d..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SqrtIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _SqrtIO_h_
-#define _SqrtIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class SqrtReader: public GenFunctionReader {
-
- public:
-  
-  SqrtReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class SqrtRecorder: public GenFunctionRecorder {
-
- public:
-  
-  SqrtRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SquareIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SquareIO.h
deleted file mode 100644
index 082a62c3e5201fd6806196b861a593de6ae31d08..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/SquareIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _SquareIO_h_
-#define _SquareIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class SquareReader: public GenFunctionReader {
-
- public:
-  
-  SquareReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class SquareRecorder: public GenFunctionRecorder {
-
- public:
-  
-  SquareRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TanIO.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TanIO.h
deleted file mode 100644
index 5d1dcf59667be1cbb2760d242bae27f93b123ae2..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TanIO.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _TanIO_h_
-#define _TanIO_h_
-
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-class TanReader: public GenFunctionReader {
-
- public:
-  
-  TanReader(GenFunctionInterpreter * interpreter);
-  virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
-  
-};
-
-
-class TanRecorder: public GenFunctionRecorder {
-
- public:
-  
-  TanRecorder(GenFunctionPersistifier * persistifier);
-  virtual void execute(const GeoGenfun::AbsFunction & F) const;
-  
-};
-#endif
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionInterpreter.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionInterpreter.h
deleted file mode 100644
index 62d8ba9cf7d594a753265e653fb384fa92fe1405..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionInterpreter.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef _TRANSFUNCTIONINTERPRETER_H_
-#define _TRANSFUNCTIONINTERPRETER_H_
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include <map>
-#include <string>
-#include <typeinfo>
-#include <sstream>
-#include <memory>
-
-//
-// Forward definition of "Transfunction"
-//
-namespace GeoXF {
-  class Function;
-}
-
-//
-// Forward definition of TransFunctionRecorder;
-//
-class TransFunctionReader;
-typedef std::unique_ptr<const GeoXF::Function> TFPTR;
-
-class TransFunctionInterpreter {
-
- public:
-
-  // Constructor
-  TransFunctionInterpreter();
-
-  // Destructor
-  ~TransFunctionInterpreter();
-  
-  // Registers a reader:
-  void add(const std::string &str, const TransFunctionReader * reader); 
-
-  // Interprets a string.  
-  TFPTR interpret(const std::string & str) const;
-
-  // Retrieves the genfunction persistitier:
-  const GenFunctionInterpreter * getGenFunctionInterpreter() const;
-  
- private:
-
-  // Store the actual interpreters, map them into the type name
-  std::map<std::string, const TransFunctionReader *> m_readerMap;
-
-  // A pointer to the GenFunctionInterpreter:
-  const GenFunctionInterpreter m_fInterpreter;
-
-  // Deleted methods:
-  TransFunctionInterpreter(const TransFunctionInterpreter &)               = delete;
-  TransFunctionInterpreter & operator = (const TransFunctionInterpreter &) = delete;
-  
-};
-
-
-#endif
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionPersistifier.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionPersistifier.h
deleted file mode 100644
index 2b9cab9853b307211dd53fbe2d75155a2b442bfc..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionPersistifier.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef _GEOPERSISTIFIER_H_
-#define _GEOPERSISTIFIER_H_
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include <map>
-#include <string>
-#include <typeinfo>
-#include <sstream>
-
-//
-// Forward definition of "Transfunction"
-//
-namespace GeoXF {
-  class Function;
-}
-
-//
-// Forward definition of TransFunctionRecorder;
-//
-class TransFunctionRecorder;
-class GenFunctionPersistifier;
-
-
-class TransFunctionPersistifier {
-
- public:
-
-  // Constructor
-  TransFunctionPersistifier();
-
-  // Destructor
-  ~TransFunctionPersistifier();
-  
-  // Registers a recorder:
-  void add(const std::type_info & tInfo, const TransFunctionRecorder * recorder); 
-
-  // Persistifies the function.  Result goes into the coded string.
-  void persistify(const GeoXF::Function & f) const;
-
-  // Retrieves the coded string after the persistify operation:
-  const std::string & getCodedString() const;
-
-  // Retrieves the stream used to build the expression:
-  std::ostringstream & getStream() const;
-
-  // Retrieves the genfunction persistitier:
-  const GenFunctionPersistifier * getGenFunctionPersistifier() const;
-  
- private:
-
-  // Store the actual recorders, map them into the type name
-  std::map<std::string, const TransFunctionRecorder *> m_recorderMap;
-
-  // Here is the result:
-  mutable std::string m_codedString;
-
-  // An ostringstream is used to build the coded string:
-  mutable std::ostringstream *m_stream;
-
-  // The GenFunctionPersistifier:
-  GenFunctionPersistifier m_persistifier;
-  
-  // Deleted methods:
-  TransFunctionPersistifier(const TransFunctionPersistifier &)               = delete;
-  TransFunctionPersistifier & operator = (const TransFunctionPersistifier &) = delete;
-  
-};
-
-
-#endif
-
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionReader.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionReader.h
deleted file mode 100644
index d4a2aa447be25db9bf1e4aec2eed33bb788a5762..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionReader.h
+++ /dev/null
@@ -1,106 +0,0 @@
-#ifndef _TRANSFUNCTIONREADER_H_
-#define _TRANSFUNCTIONREADER_H_
-
-#include "GeoModelKernel/GeoXF.h"
-
-#include <memory>
-//
-
-
-// Forward definition of "Transfunction"
-//
-namespace GeoXF {
-  class Function;
-}
-
-typedef std::unique_ptr<const GeoXF::Function> TFPtr;
-
-
-//
-// Forward definition of TransFunctionInterpreter;
-//
-class TransFunctionInterpreter;
-
-class TransFunctionReader {
-
- public:
-
-  // Constructor.  Keep a pointer to the interpreter for purposes of recusion.
-  TransFunctionReader(const std::string & name, TransFunctionInterpreter *interpreter);
-
-  // Destructor
-  virtual ~TransFunctionReader();
-
-  // Execute
-  virtual TFPTR execute(const std::string & arg) const=0;
-
-  // Access to the interpreter:
-  const TransFunctionInterpreter *getInterpreter() const;
-
- protected:
-
-  // Some of the subclasses require two arguments, separated by a |. This
-  // splits the argument into its two pieces:
-  std::pair<std::string, std::string> split(const std::string & arg) const;
-  
-  // Help scan transforms
-  GeoTrf::Transform3D scanT(const std::string & exprString) const;
-
-  private:
-
-
-  // A pointer to the interpreter:
-  const TransFunctionInterpreter* m_interpreter;
-
-  // Deleted operations:
-  TransFunctionReader(const TransFunctionReader &)               = delete;
-  TransFunctionReader & operator = (const TransFunctionReader &) = delete;
-
-  
-};
-
-// Now we add the pre-existing types of transfunction (=GeoXF::Function).  These
-// may well be the only types we ever need!.
-
-class ProductReader: public TransFunctionReader {
-
- public:
-  
-  ProductReader(TransFunctionInterpreter * interpreter);
-  virtual TFPTR execute(const std::string & arg) const;
-  
-};
-
-
-class PreMultReader: public TransFunctionReader {
-
- public:
-  
-  PreMultReader(TransFunctionInterpreter * interpreter);
-  virtual TFPTR execute(const std::string & arg) const;
-  
-};
-
-class PostMultReader: public TransFunctionReader {
-
- public:
-  
-  PostMultReader(TransFunctionInterpreter * interpreter);
-  virtual TFPTR  execute(const std::string & arg) const;
-  
-};
-
-
-class PowReader: public TransFunctionReader {
-
- public:
-  
-  PowReader(TransFunctionInterpreter * interpreter);
-  virtual TFPTR execute(const std::string & arg) const;
-  
-};
-
-
-
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionRecorder.h b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionRecorder.h
deleted file mode 100644
index d83f7cd5a87be7ac3fc7d32f25c588fa4df18a82..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/TFPersistification/TransFunctionRecorder.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef _TRANSFUNCTIONRECORDER_H_
-#define _TRANSFUNCTIONRECORDER_H_
-#include <typeinfo>
-
-//
-// Forward definition of "Transfunction"
-//
-namespace GeoXF {
-  class Function;
-}
-
-//
-// Forward definition of TransFunctionPersistifier;
-//
-class TransFunctionPersistifier;
-
-class TransFunctionRecorder {
-
- public:
-
-  // Constructor.  Keep a pointer to the persistifier for purposes of recusion.
-  TransFunctionRecorder(const std::type_info & info, TransFunctionPersistifier *persistifier);
-
-  // Destructor
-  virtual ~TransFunctionRecorder();
-
-  // Execute
-  virtual void execute(const GeoXF::Function & transfunction) const=0;
-
-  // Access to the persistifier:
-  const TransFunctionPersistifier *getPersistifier() const;
-  
- private:
-
-  // A pointer to the persistifier:
-  const TransFunctionPersistifier                               *m_persistifier;
-
-  // Deleted operations:
-  TransFunctionRecorder(const TransFunctionRecorder &)               = delete;
-  TransFunctionRecorder & operator = (const TransFunctionRecorder &) = delete;
-
-  
-};
-
-// Now we add the pre-existing types of transfunction (=GeoXF::Function).  These
-// may well be the only types we ever need!.
-
-class ProductRecorder: public TransFunctionRecorder {
-
- public:
-  
-  ProductRecorder(TransFunctionPersistifier * persistifier);
-  virtual void execute(const GeoXF::Function &) const;
-  
-};
-
-
-class PreMultRecorder: public TransFunctionRecorder {
-
- public:
-  
-  PreMultRecorder(TransFunctionPersistifier * persistifier);
-  virtual void execute(const GeoXF::Function & ) const;
-  
-};
-
-class PostMultRecorder: public TransFunctionRecorder {
-
- public:
-  
-  PostMultRecorder(TransFunctionPersistifier * persistifier);
-  virtual void execute(const GeoXF::Function & ) const;
-  
-};
-
-
-class PowRecorder: public TransFunctionRecorder {
-
- public:
-  
-  PowRecorder(TransFunctionPersistifier * persistifier);
-  virtual void execute(const GeoXF::Function &) const;
-  
-};
-
-
-
-
-#endif
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ACosIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ACosIO.cpp
deleted file mode 100644
index 6679930302c4d300017e137305a1c45c670158f2..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ACosIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/ACosIO.h"
-
-#include "GeoGenericFunctions/ACos.h"
-
-ACosReader::ACosReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ACos", interpreter) {}
-
-
-GFPTR  ACosReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::ACos());
-}
-
-
-ACosRecorder::ACosRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ACos),persistifier) {}
-
-void ACosRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ACos * ptr = dynamic_cast<const GeoGenfun::ACos *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ACosRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "ACos";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ASinIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ASinIO.cpp
deleted file mode 100644
index c4a2e0c14543473dcbf9669a6546c7925d94457b..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ASinIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/ASinIO.h"
-
-#include "GeoGenericFunctions/ASin.h"
-
-ASinReader::ASinReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ASin", interpreter) {}
-
-
-GFPTR  ASinReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::ASin());
-}
-
-
-ASinRecorder::ASinRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ASin),persistifier) {}
-
-void ASinRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ASin * ptr = dynamic_cast<const GeoGenfun::ASin *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ASinRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "ASin";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ATanIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ATanIO.cpp
deleted file mode 100644
index 33df878f45ba9167f4d356dea3ba9c03690d11fd..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ATanIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/ATanIO.h"
-
-#include "GeoGenericFunctions/ATan.h"
-
-ATanReader::ATanReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ATan", interpreter) {}
-
-
-GFPTR  ATanReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::ATan());
-}
-
-
-ATanRecorder::ATanRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ATan),persistifier) {}
-
-void ATanRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ATan * ptr = dynamic_cast<const GeoGenfun::ATan *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ATanRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "ATan";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/AbsIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/AbsIO.cpp
deleted file mode 100644
index cb8039fca032ba61f3b57ab5e1861f3913b2252c..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/AbsIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/AbsIO.h"
-
-#include "GeoGenericFunctions/Abs.h"
-
-AbsReader::AbsReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Abs", interpreter) {}
-
-
-GFPTR  AbsReader::execute(std::string::const_iterator, std::string::const_iterator) const {
-  return GFPTR(new GeoGenfun::Abs());
-}
-
-
-AbsRecorder::AbsRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Abs),persistifier) {}
-
-void AbsRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Abs * ptr = dynamic_cast<const GeoGenfun::Abs *> (&F);
-  if (!ptr) throw std::runtime_error("Error in AbsRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Abs";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ArrayFunctionIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ArrayFunctionIO.cpp
deleted file mode 100644
index f0ff7ea19772d3d13bc1ab48cd6a7ff553cb5524..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ArrayFunctionIO.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "GeoGenericFunctions/ArrayFunction.h"
-
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/ArrayFunctionIO.h"
-ArrayFunctionReader::ArrayFunctionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ArrayFunction", interpreter) {}
-
-
-GFPTR  ArrayFunctionReader::execute(std::string::const_iterator cStart, std::string::const_iterator cEnd) const {
-  std::vector<double> elements;
-  auto cNext=std::find(cStart, cEnd,',');
-  while (cNext!=cEnd) {
-    std::string aNumberStr(cStart,cNext);
-    std::istringstream stream(aNumberStr);
-    double d;
-    stream >> d;
-    elements.push_back(d);
-    cStart=cNext+1;
-    cNext=std::find(cStart, cEnd,',');
-  }
-
-  std::string aNumberStr(cStart,cNext);
-  std::istringstream stream(aNumberStr);
-  double d;
-  stream >> d;
-  elements.push_back(d);
-  
-  return GFPTR(new GeoGenfun::ArrayFunction(&elements.front(), &elements.back() + 1));
-}
-
-
-ArrayFunctionRecorder::ArrayFunctionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ArrayFunction),persistifier) {}
-
-void ArrayFunctionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ArrayFunction * ptr = dynamic_cast<const GeoGenfun::ArrayFunction *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ArrayFunctionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "ArrayFunction";
-  stream << "(";
-  for (size_t i=0;i<ptr->values().size();i++){
-    stream<<ptr->values()[i];
-    if (i!=ptr->values().size()-1) stream << ",";
-  }
-  stream << ")";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/CosIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/CosIO.cpp
deleted file mode 100644
index 15c055a8991f5f632cfe03e6d9ffcb0d850fdd0e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/CosIO.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/CosIO.h"
-
-#include "GeoGenericFunctions/Cos.h"
-
-CosReader::CosReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Cos",interpreter) {}
-
-
-GFPTR  CosReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::Cos());
-}
-
-CosRecorder::CosRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Cos), persistifier) {}
-
-void CosRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Cos * ptr = dynamic_cast<const GeoGenfun::Cos *> (&F);
-  if (!ptr) throw std::runtime_error("Error in CosRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Cos";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/FixedConstantIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/FixedConstantIO.cpp
deleted file mode 100644
index c57ddd8b1adc4b1d6d31811edf36f38c14dd3835..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/FixedConstantIO.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "GeoGenericFunctions/FixedConstant.h"
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/FixedConstantIO.h"
-FixedConstantReader::FixedConstantReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FixedConstant", interpreter) {}
-
-
-GFPTR  FixedConstantReader::execute(std::string::const_iterator begin, std::string::const_iterator end) const {
-  double v;
-  std::string aNumberStr(begin,end);
-  std::istringstream stream(aNumberStr);
-  stream >> v;
-  return GFPTR(new GeoGenfun::FixedConstant(v));
-}
-
-
-FixedConstantRecorder::FixedConstantRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FixedConstant),persistifier) {}
-
-void FixedConstantRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FixedConstant * ptr = dynamic_cast<const GeoGenfun::FixedConstant *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FixedConstantRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FixedConstant";
-  stream << "(";
-  stream<<(*ptr)(0);
-  stream << ")";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionInterpreter.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionInterpreter.cpp
deleted file mode 100644
index 647e6fc70a967a555fb23cbe9f53f9e3e709791b..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionInterpreter.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/GenFunctionReader.h"
-#include "TFPersistification/ArrayFunctionIO.h"
-#include "TFPersistification/ModIO.h"
-#include "TFPersistification/FixedConstantIO.h"
-#include "TFPersistification/RectangularIO.h"
-#include "TFPersistification/AbsIO.h"
-#include "TFPersistification/SinIO.h"
-#include "TFPersistification/ASinIO.h"
-#include "TFPersistification/CosIO.h"
-#include "TFPersistification/ACosIO.h"
-#include "TFPersistification/TanIO.h"
-#include "TFPersistification/ATanIO.h"
-#include "TFPersistification/SqrtIO.h"
-#include "TFPersistification/SquareIO.h"
-#include "TFPersistification/GenfunIO.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-#include "GeoGenericFunctions/Argument.h"
-#include "GeoModelKernel/GeoDefinitions.h"
-#include "GeoModelKernel/GeoXF.h"
-
-#include <iterator>
-
-GenFunctionInterpreter::~GenFunctionInterpreter() {
-  for (auto i=m_readerMap.begin();i!=m_readerMap.end();i++) delete (*i).second;
-}
-
-GenFunctionInterpreter::GenFunctionInterpreter() {
-  new ArrayFunctionReader(this);
-  new ModReader(this);
-  new FixedConstantReader(this);
-  new RectangularReader(this);
-  new SinReader(this);
-  new CosReader(this);
-  new TanReader(this);
-  new ASinReader(this);
-  new ACosReader(this);
-  new ATanReader(this);
-  new AbsReader(this);
-  new SqrtReader(this);
-  new SquareReader(this);
-  new VariableReader(this);
-  new ConstTimesFunctionReader(this);
-  new ConstPlusFunctionReader(this);
-  new ConstMinusFunctionReader(this);
-  new ConstOverFunctionReader(this);
-  new FunctionCompositionReader(this);
-  new FunctionProductReader(this);
-  new FunctionSumReader(this);
-  new FunctionQuotientReader(this);
-  new FunctionDifferenceReader(this);
-  new FunctionNegationReader(this);
-  new FunctionNoopReader(this);
-}
-
-void GenFunctionInterpreter::add(const std::string & str, const GenFunctionReader * reader) {
-  reader=m_readerMap[str]=reader;
-}
-
-
-GFPTR GenFunctionInterpreter::interpret(std::string::const_iterator sBegin, std::string::const_iterator sEnd) const {
-
-  auto begin=std::find(sBegin, sEnd, '(');
-  std::reverse_iterator<std::string::const_iterator> rBegin(sEnd);
-  std::reverse_iterator<std::string::const_iterator> rEnd(sBegin);
-  auto end=std::find(rBegin, rEnd, ')').base();
-  
-
-  if (end==sBegin || begin==sEnd) {
-    // Base case. This is the bottom of the tree!
-    std::string exprString(sBegin,sEnd);
-    auto rIter = m_readerMap.find(exprString);
-    if (rIter==m_readerMap.end()) {
-      std::ostringstream stream;
-      stream << "Ominous warning in GenFunctionInterpreter: cannot parse function " << exprString;
-      throw std::runtime_error (stream.str());
-    }
-    const GenFunctionReader *reader = (*rIter).second;
-    return reader->execute(begin,begin);//exec w/null expression
-  }
-  std::string op(sBegin,begin);
-  auto argBegin=begin+1, argEnd=end-1;
-  auto rIter = m_readerMap.find(op);
-  if (rIter==m_readerMap.end()) {
-    std::ostringstream stream;
-    stream << "Ominous warning in GenFunctionInterpreter: cannot interpret function " << op;
-    throw std::runtime_error (stream.str());
-  }
-  const GenFunctionReader *reader = (*rIter).second;
-  return reader->execute(argBegin,argEnd);
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionPersistifier.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionPersistifier.cpp
deleted file mode 100644
index 0e2d4782acedc1a814075c65813119d67691a70a..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionPersistifier.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionRecorder.h"
-#include "TFPersistification/SinIO.h"
-#include "TFPersistification/TanIO.h"
-#include "TFPersistification/CosIO.h"
-#include "TFPersistification/ASinIO.h"
-#include "TFPersistification/ATanIO.h"
-#include "TFPersistification/ACosIO.h"
-#include "TFPersistification/SqrtIO.h"
-#include "TFPersistification/SquareIO.h"
-#include "TFPersistification/AbsIO.h"
-#include "TFPersistification/ArrayFunctionIO.h"
-#include "TFPersistification/ModIO.h"
-#include "TFPersistification/FixedConstantIO.h"
-#include "TFPersistification/RectangularIO.h"
-#include "TFPersistification/GenfunIO.h"
-
-#include "GeoGenericFunctions/AbsFunction.h"
-
-
-#include <sstream>
-const std::string & GenFunctionPersistifier::getCodedString() const {
-  m_codedString=getStream().str();
-  delete m_stream;
-  m_stream=NULL;
-  return m_codedString;
-}
-
-
-GenFunctionPersistifier::~GenFunctionPersistifier() {
-  delete m_stream;
-  for (auto i=m_recorderMap.begin();i!=m_recorderMap.end();i++) {
-    delete (*i).second;
-  }
-}
-GenFunctionPersistifier::GenFunctionPersistifier():m_stream(NULL) {
-  new ConstPlusFunctionRecorder(this);
-  new ConstTimesFunctionRecorder(this);
-  new ConstMinusFunctionRecorder(this);
-  new ConstOverFunctionRecorder(this);
-  new FunctionNegationRecorder(this);
-  new FunctionNoopRecorder(this);
-  new FunctionProductRecorder(this);
-  new FunctionQuotientRecorder(this);
-  new FunctionCompositionRecorder(this);
-  new FunctionSumRecorder(this);
-  new FunctionDifferenceRecorder(this);
-  new SinRecorder(this);
-  new CosRecorder(this);
-  new TanRecorder(this);
-  new ASinRecorder(this);
-  new ACosRecorder(this);
-  new ATanRecorder(this);
-  new AbsRecorder(this);
-  new SqrtRecorder(this);
-  new SquareRecorder(this);
-  new ArrayFunctionRecorder(this);
-  new ModRecorder(this);
-  new FixedConstantRecorder(this);
-  new RectangularRecorder(this);
-  new VariableRecorder(this);
-}
-
-void GenFunctionPersistifier::add(const std::type_info & tInfo, const GenFunctionRecorder * recorder) {
-  m_recorderMap[tInfo.name()]=recorder;
-}
-
-std::ostringstream & GenFunctionPersistifier::getStream() const {
-  if (!m_stream) m_stream = new std::ostringstream();
-  return *m_stream;
-}
-
-void GenFunctionPersistifier::persistify(const GeoGenfun::AbsFunction & f) const {
-
-  auto rIter = m_recorderMap.find(typeid(f).name());
-  if (rIter!=m_recorderMap.end()) {
-    const GenFunctionRecorder *recorder = (*rIter).second;
-    recorder->execute(f);
-  }
-  else {
-    std::ostringstream message;
-    message << "Ominous warning in GenFunctionPersistifier: cannot persistify function with type id: " << typeid(f).name();
-    throw std::runtime_error (message.str());
-  }
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionReader.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionReader.cpp
deleted file mode 100644
index 521f8abeaf9eb924e5665e1f0b7afd7744fa4267..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionReader.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/GenFunctionReader.h"
-
-#include <stdexcept>
-
-
-
-GenFunctionReader::GenFunctionReader(const std::string & name, GenFunctionInterpreter * interpreter):
-  m_name(name),m_interpreter(interpreter) {
-  interpreter->add(name, this);
-}
-
-const std::string & GenFunctionReader::getName() const {
-  return m_name;
-}
-
-const GenFunctionInterpreter *GenFunctionReader::getInterpreter() const {
-  return m_interpreter;
-}
-#ifdef NOT_THIS_ONE
-std::string::const_iterator GenFunctionReader::split(std::string::const_iterator begin, std::string::const_iterator end) const {
-  auto cSearch=begin;
-  
-  while (1) {
-    auto cComma=std::find(cSearch,end,',');
-    int cOpen=std::count(begin,cComma,'(');
-    int cClose=std::count(begin,cComma,')');
-    if (cOpen==cClose) return cComma;
-    cSearch = ++cComma;
-  }
-  //
-  // Make the compiler happy, but the statement should never occur.
-  //
-  return end; 
-}
-
-#endif
-std::string::const_iterator GenFunctionReader::split(std::string::const_iterator begin, std::string::const_iterator end) const {
-  using namespace std;
-
-  auto cSearch=begin;
-  std::string::const_iterator cComma=end;
-
-  int pCount=0;
-  while (1) {
-    for (auto i=cSearch;i!=end;i++) {
-      char c=*i;
-      if (c==',') {
-	cComma=i;
-	if (pCount==0) {
-	  return cComma;
-	}
-	else {
-	  break;
-	}
-      }
-      else if (c==')') {
-	pCount--;
-      }
-      else if (c=='(') {
-	pCount++;
-      }
-    }
-    cSearch = ++cComma;
-  }
-  return end;
-}
-
-GenFunctionReader::~GenFunctionReader () {}
-
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionRecorder.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionRecorder.cpp
deleted file mode 100644
index b19c202a25397bce145ced4af148c5c17725adc6..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenFunctionRecorder.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "TFPersistification/GenFunctionRecorder.h"
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include <stdexcept>
-#include <typeinfo>
-
-
-GenFunctionRecorder::GenFunctionRecorder(const std::type_info & info, GenFunctionPersistifier * persistifier):
-  m_persistifier(persistifier) {
-  persistifier->add(info, this);
-}
-
-const GenFunctionPersistifier *GenFunctionRecorder::getPersistifier() const {
-  return m_persistifier;
-}
-
-GenFunctionRecorder::~GenFunctionRecorder () {}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenfunIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenfunIO.cpp
deleted file mode 100644
index 75012eb6c561babbea1a522f4e21c1ef4f3605cc..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/GenfunIO.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-#include "GeoGenericFunctions/AbsFunction.h"
-
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenfunIO.h"
-
-#include "GeoGenericFunctions/Variable.h"
-
-#include <sstream>
-
-ConstTimesFunctionReader::ConstTimesFunctionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ConstTimesFunction", interpreter) {}
-
-inline double atof(std::string::const_iterator begin, std::string::const_iterator end) {
-
-  std::string atom(begin,end);
-  std::istringstream stream(atom);
-  double x=0;
-  stream >> x;
-  return x;
-  
-}
-
-GFPTR  ConstTimesFunctionReader::execute(std::string::const_iterator begin, std::string::const_iterator end) const {
-  auto sep=split(begin,end);
-  double c=atof(begin,sep);
-  return GFPTR(new GeoGenfun::ConstTimesFunction(c,getInterpreter()->interpret(sep+1,end).get()));
-}
-
-
-ConstTimesFunctionRecorder::ConstTimesFunctionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ConstTimesFunction), persistifier) {}
-
-void ConstTimesFunctionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ConstTimesFunction * ptr = dynamic_cast<const GeoGenfun::ConstTimesFunction *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ConstTimesFunctionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  double c1=ptr->_constant;
-  stream << "ConstTimesFunction" << "(";
-  stream << c1;
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg);
-  stream << ")";
-}
-
-ConstPlusFunctionReader::ConstPlusFunctionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ConstPlusFunction", interpreter) {}
-
-
-GFPTR  ConstPlusFunctionReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin, end);
-  double c=atof(begin,sep);
-  return GFPTR(new GeoGenfun::ConstPlusFunction(c,getInterpreter()->interpret(sep+1,end).get()));
-}
-
-ConstPlusFunctionRecorder::ConstPlusFunctionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ConstPlusFunction),persistifier) {}
-
-void ConstPlusFunctionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ConstPlusFunction * ptr = dynamic_cast<const GeoGenfun::ConstPlusFunction *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ConstPlusFunctionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  double c1=ptr->_constant;
-  stream << "ConstPlusFunction" << "(";
-  stream << c1;
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg);
-  stream << ")";
-}
-
-ConstMinusFunctionReader::ConstMinusFunctionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ConstMinusFunction", interpreter) {}
-
-
-GFPTR  ConstMinusFunctionReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  double c=atof(begin,sep);
-  return GFPTR(new GeoGenfun::ConstMinusFunction(c,getInterpreter()->interpret(sep+1,end).get()));
-}
-
-ConstMinusFunctionRecorder::ConstMinusFunctionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ConstMinusFunction),persistifier) {}
-
-void ConstMinusFunctionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ConstMinusFunction * ptr = dynamic_cast<const GeoGenfun::ConstMinusFunction *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ConstMinusFunctionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  double c1=ptr->_constant;
-  stream << "ConstMinusFunction" << "(";
-  stream << c1;
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg);
-  stream << ")";
-}
-
-ConstOverFunctionReader::ConstOverFunctionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ConstOverFunction", interpreter) {}
-
-
-GFPTR  ConstOverFunctionReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  double c=atof(begin,sep);
-  return GFPTR(new GeoGenfun::ConstOverFunction(c,getInterpreter()->interpret(sep+1,end).get()));
-}
-
-ConstOverFunctionRecorder::ConstOverFunctionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::ConstOverFunction),persistifier) {}
-
-void ConstOverFunctionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::ConstOverFunction * ptr = dynamic_cast<const GeoGenfun::ConstOverFunction *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ConstOverFunctionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  double c1=ptr->_constant;
-  stream << "ConstOverFunction" << "(";
-  stream << c1;
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg);
-  stream << ")";
-}
-
-FunctionCompositionReader::FunctionCompositionReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionComposition", interpreter) {}
-
-
-GFPTR  FunctionCompositionReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  return GFPTR(new GeoGenfun::FunctionComposition(getInterpreter()->interpret(begin,sep).get(),getInterpreter()->interpret(sep+1,end).get()));
-}
-
-FunctionCompositionRecorder::FunctionCompositionRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionComposition), persistifier) {}
-
-void FunctionCompositionRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionComposition * ptr = dynamic_cast<const GeoGenfun::FunctionComposition *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionCompositionRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FunctionComposition(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg2);
-  stream << ")";
-}
-
-FunctionNegationReader::FunctionNegationReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionNegation",interpreter) {}
-
-
-GFPTR  FunctionNegationReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  return GFPTR(new GeoGenfun::FunctionNegation(getInterpreter()->interpret(begin,end).get()));
-}
-
-FunctionNegationRecorder::FunctionNegationRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionNegation),persistifier) {}
-
-void FunctionNegationRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionNegation * ptr = dynamic_cast<const GeoGenfun::FunctionNegation *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionNegationRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream  << "FunctionNegation(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ")";
-}
-
-FunctionNoopReader::FunctionNoopReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionNoop",interpreter) {}
-
-
-GFPTR  FunctionNoopReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  return GFPTR(new GeoGenfun::FunctionNoop(getInterpreter()->interpret(begin,end).get()));
-}
-
-FunctionNoopRecorder::FunctionNoopRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionNoop),persistifier) {}
-
-void FunctionNoopRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionNoop * ptr = dynamic_cast<const GeoGenfun::FunctionNoop *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionNoopRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream  << "FunctionNoop(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ")";
-}
-
-FunctionProductReader::FunctionProductReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionProduct",interpreter) {}
-
-
-GFPTR  FunctionProductReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  return GFPTR(new GeoGenfun::FunctionProduct(getInterpreter()->interpret(begin,sep).get(),getInterpreter()->interpret(sep+1,end).get()));
-}
-
-FunctionProductRecorder::FunctionProductRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionProduct), persistifier) {}
-
-void FunctionProductRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionProduct * ptr = dynamic_cast<const GeoGenfun::FunctionProduct *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionProductRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FunctionProduct(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg2);
-  stream << ")";
-}
-
-FunctionSumReader::FunctionSumReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionSum",interpreter) {}
-
-
-GFPTR  FunctionSumReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  return GFPTR(new GeoGenfun::FunctionSum(getInterpreter()->interpret(begin,sep).get(),getInterpreter()->interpret(sep+1,end).get()));
-}
-
-FunctionSumRecorder::FunctionSumRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionSum), persistifier) {}
-
-void FunctionSumRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionSum * ptr = dynamic_cast<const GeoGenfun::FunctionSum *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionSumRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FunctionSum(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg2);
-  stream << ")";
-}
-
-
-
-
-
-
-FunctionQuotientReader::FunctionQuotientReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionQuotient",interpreter) {}
-
-
-GFPTR  FunctionQuotientReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  return GFPTR(new GeoGenfun::FunctionQuotient(getInterpreter()->interpret(begin,sep).get(),getInterpreter()->interpret(sep+1,end).get()));
-}
-
-FunctionQuotientRecorder::FunctionQuotientRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionQuotient), persistifier) {}
-
-void FunctionQuotientRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionQuotient * ptr = dynamic_cast<const GeoGenfun::FunctionQuotient *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionQuotientRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FunctionQuotient(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg2);
-  stream << ")";
-}
-
-FunctionDifferenceReader::FunctionDifferenceReader(GenFunctionInterpreter *interpreter):GenFunctionReader("FunctionDifference",interpreter) {}
-
-
-GFPTR  FunctionDifferenceReader::execute(std::string::const_iterator begin, std::string::const_iterator end ) const {
-  auto sep=split(begin,end);
-  return GFPTR(new GeoGenfun::FunctionDifference(getInterpreter()->interpret(begin,sep).get(),getInterpreter()->interpret(sep+1,end).get()));
-}
-
-FunctionDifferenceRecorder::FunctionDifferenceRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::FunctionDifference), persistifier) {}
-
-void FunctionDifferenceRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::FunctionDifference * ptr = dynamic_cast<const GeoGenfun::FunctionDifference *> (&F);
-  if (!ptr) throw std::runtime_error("Error in FunctionDifferenceRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "FunctionDifference(";
-  getPersistifier()->persistify(*ptr->_arg1);
-  stream << ",";
-  getPersistifier()->persistify(*ptr->_arg2);
-  stream << ")";
-}
-
-
-
-
-
-VariableReader::VariableReader(GenFunctionInterpreter *interpreter):GenFunctionReader("X",interpreter) {}
-
-
-GFPTR  VariableReader::execute(std::string::const_iterator, std::string::const_iterator) const {
-  return GFPTR(new GeoGenfun::Variable());
-}
-
-
-VariableRecorder::VariableRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Variable), persistifier) {}
-
-void VariableRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Variable * ptr = dynamic_cast<const GeoGenfun::Variable *> (&F);
-  if (!ptr) throw std::runtime_error("Error in VariableRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "X";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ModIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ModIO.cpp
deleted file mode 100644
index 683eab7d9e6df739b1f3a17f93a054d67dee757f..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/ModIO.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "GeoGenericFunctions/Mod.h"
-
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/ModIO.h"
-
-ModReader::ModReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Mod", interpreter) {}
-
-
-GFPTR  ModReader::execute(std::string::const_iterator begin, std::string::const_iterator end) const {
-  double y;
-  std::string aNumberStr(begin,end);
-  std::istringstream stream(aNumberStr);
-  stream >> y;
-  return GFPTR(new GeoGenfun::Mod(y));
-}
-
-
-ModRecorder::ModRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Mod),persistifier) {}
-
-void ModRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Mod * ptr = dynamic_cast<const GeoGenfun::Mod *> (&F);
-  if (!ptr) throw std::runtime_error("Error in ModRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Mod";
-  stream << "(";
-  stream<<ptr->modulus();
-  stream << ")";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/RectangularIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/RectangularIO.cpp
deleted file mode 100644
index eb521dad9aae6127dad68f8bb5bd54fee572fd9b..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/RectangularIO.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "GeoGenericFunctions/Rectangular.h"
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/RectangularIO.h"
-
-RectangularReader::RectangularReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Rectangular", interpreter) {}
-
-
-GFPTR  RectangularReader::execute(std::string::const_iterator begin, std::string::const_iterator end) const {
-  std::vector<double> elements;
-  auto cStart=begin;
-  auto cNext=std::find(cStart, end,',');
-  while (cNext!=end) {
-    std::string aNumberStr(cStart,cNext);
-    std::istringstream stream(aNumberStr);
-    double d;
-    stream >> d;
-    elements.push_back(d);
-    cStart=cNext+1;
-    cNext=std::find(cStart, end,',');
-  }
-  std::string aNumberStr(cStart,cNext);
-  std::istringstream stream(aNumberStr);
-  double d;
-  stream >> d;
-  elements.push_back(d);
-  if (elements.size()!=4) throw std::runtime_error("Error in Rectangular: illegal value list");
-  
-  GeoGenfun::Rectangular *ptr=new GeoGenfun::Rectangular();
-  ptr->x0().setValue(elements[0]);
-  ptr->x1().setValue(elements[1]);
-  ptr->baseline().setValue(elements[2]);
-  ptr->height().setValue(elements[3]);
-  return GFPTR(ptr);
-}
-
-
-RectangularRecorder::RectangularRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Rectangular),persistifier) {}
-
-void RectangularRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Rectangular * ptr = dynamic_cast<const GeoGenfun::Rectangular *> (&F);
-  if (!ptr) throw std::runtime_error("Error in RectangularRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Rectangular";
-  stream << "(";
-  stream << ptr->x0().getValue();
-  stream << ",";
-  stream << ptr->x1().getValue();
-  stream << ",";
-  stream << ptr->baseline().getValue();
-  stream << ",";
-  stream << ptr->height().getValue();
-  stream << ")";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SinIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SinIO.cpp
deleted file mode 100644
index 4a450d3af62f93d6eaa6c26df67732251eb2a700..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SinIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/SinIO.h"
-
-#include "GeoGenericFunctions/Sin.h"
-
-SinReader::SinReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Sin", interpreter) {}
-
-
-GFPTR  SinReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::Sin());
-}
-
-
-SinRecorder::SinRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Sin),persistifier) {}
-
-void SinRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Sin * ptr = dynamic_cast<const GeoGenfun::Sin *> (&F);
-  if (!ptr) throw std::runtime_error("Error in SinRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Sin";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SqrtIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SqrtIO.cpp
deleted file mode 100644
index a06a58e10519551179a1febe1f1bf87ea123e05e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SqrtIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/SqrtIO.h"
-
-#include "GeoGenericFunctions/Sqrt.h"
-
-SqrtReader::SqrtReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Sqrt", interpreter) {}
-
-
-GFPTR  SqrtReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::Sqrt());
-}
-
-
-SqrtRecorder::SqrtRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Sqrt),persistifier) {}
-
-void SqrtRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Sqrt * ptr = dynamic_cast<const GeoGenfun::Sqrt *> (&F);
-  if (!ptr) throw std::runtime_error("Error in SqrtRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Sqrt";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SquareIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SquareIO.cpp
deleted file mode 100644
index 1f70c16e042d55e38f1d353d2d59ddb468fb533e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/SquareIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/SquareIO.h"
-
-#include "GeoGenericFunctions/Square.h"
-
-SquareReader::SquareReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Square", interpreter) {}
-
-
-GFPTR  SquareReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
-  return GFPTR(new GeoGenfun::Square());
-}
-
-
-SquareRecorder::SquareRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Square),persistifier) {}
-
-void SquareRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Square * ptr = dynamic_cast<const GeoGenfun::Square *> (&F);
-  if (!ptr) throw std::runtime_error("Error in SquareRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Square";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TanIO.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TanIO.cpp
deleted file mode 100644
index ad57db23d0dbb142ea6322fe0b7602718acc4022..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TanIO.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/TanIO.h"
-
-#include "GeoGenericFunctions/Tan.h"
-
-TanReader::TanReader(GenFunctionInterpreter *interpreter):GenFunctionReader("Tan", interpreter) {}
-
-
-GFPTR  TanReader::execute(std::string::const_iterator, std::string::const_iterator) const {
-  return GFPTR(new GeoGenfun::Tan());
-}
-
-
-TanRecorder::TanRecorder(GenFunctionPersistifier *persistifier):
-  GenFunctionRecorder(typeid(GeoGenfun::Tan),persistifier) {}
-
-void TanRecorder::execute(const GeoGenfun::AbsFunction & F) const {
-  const GeoGenfun::Tan * ptr = dynamic_cast<const GeoGenfun::Tan *> (&F);
-  if (!ptr) throw std::runtime_error("Error in TanRecorder:: wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "Tan";
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionInterpreter.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionInterpreter.cpp
deleted file mode 100644
index b30b6cc9ea357368ce7963e608643cbcf741310e..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionInterpreter.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "TFPersistification/TransFunctionInterpreter.h"
-#include "TFPersistification/TransFunctionReader.h"
-#include "GeoModelKernel/GeoXF.h"
-
-const GenFunctionInterpreter * TransFunctionInterpreter::getGenFunctionInterpreter() const {
-  return &m_fInterpreter;
-}
-
-
-
-TransFunctionInterpreter::~TransFunctionInterpreter() {
-  for (auto i=m_readerMap.begin();i!=m_readerMap.end();i++) {
-    delete (*i).second;
-  }
-}
-
-TransFunctionInterpreter::TransFunctionInterpreter(){
-  new PowReader(this);
-  new PreMultReader(this);
-  new PostMultReader(this);
-  new ProductReader(this);
-}
-
-void TransFunctionInterpreter::add(const std::string & str, const TransFunctionReader * reader) {
-  reader=m_readerMap[str]=reader;
-}
-
-
-TFPTR TransFunctionInterpreter::interpret(const std::string &exprString) const {
-  size_t begin = exprString.find_first_of("{");
-  size_t end = exprString.find_last_of("}");
-  if (!((begin!=std::string::npos) && (end!=std::string::npos))) {
-    throw std::runtime_error ("Ominous warning in TransFunctionPersistier:  cannot parse function");
-  }
-  std::string op = exprString.substr(0,begin);
-  std::string argument = exprString.substr(begin+1,end-begin-1);
-  // for debug only!
-  // std::cout << begin << " " << end << " " << op << " " << argument << std::endl;
-  // for (auto const& x : readerMap) {
-  //     std::cout << x.first  // string (key)
-  //               << " : "
-  //               << x.second // string's value
-  //               << std::endl ;
-  // }
-  auto rIter = m_readerMap.find(op);
-  if (rIter==m_readerMap.end()) {
-    throw std::runtime_error ("Ominous warning in TransFunctionPersistier:  cannot interpret function");
-  }
-  const TransFunctionReader *reader = (*rIter).second;
-  return reader->execute(argument);
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionPersistifier.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionPersistifier.cpp
deleted file mode 100644
index f1f2875efc2c057339e21aa5c4a5c79f815faf0d..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionPersistifier.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "TFPersistification/TransFunctionPersistifier.h"
-#include "TFPersistification/TransFunctionRecorder.h"
-#include "GeoModelKernel/GeoXF.h"
-
-const GenFunctionPersistifier * TransFunctionPersistifier::getGenFunctionPersistifier() const {
-  return &m_persistifier;
-}
-
-const std::string & TransFunctionPersistifier::getCodedString() const {
-  
-  m_codedString=getStream().str();
-  delete m_stream;
-  m_stream=NULL;
-  return m_codedString;
-}
-
-
-TransFunctionPersistifier::~TransFunctionPersistifier() {
-  delete m_stream;
-  for (auto i=m_recorderMap.begin(); i!=m_recorderMap.end();i++) {
-    delete (*i).second;
-  }
-}
-TransFunctionPersistifier::TransFunctionPersistifier():m_stream(NULL) {
-  new PreMultRecorder(this);
-  new PostMultRecorder(this);
-  new PowRecorder(this);
-  new ProductRecorder(this);
-}
-
-void TransFunctionPersistifier::add(const std::type_info & tInfo, const TransFunctionRecorder * recorder) {
-  m_recorderMap[tInfo.name()]=recorder;
-}
-
-std::ostringstream & TransFunctionPersistifier::getStream() const {
-  if (!m_stream) m_stream = new std::ostringstream();
-  return *m_stream;
-}
-
-void TransFunctionPersistifier::persistify( const GeoXF::Function & f) const {
-  
-  auto rIter = m_recorderMap.find(typeid(f).name());
-  if (rIter!=m_recorderMap.end()) {
-    const TransFunctionRecorder *recorder = (*rIter).second;
-    recorder->execute(f);
-  }
-  else {
-      std::ostringstream message;
-    message << "Ominous warning in TransFunctionPersistier: cannot persistify function with type id: " << typeid(f).name();
-    throw std::runtime_error (message.str());
-  }
-    
-    //throw std::runtime_error ("Ominous warning in TransFunctionPersistier:  cannot persistify function");
- 
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionReader.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionReader.cpp
deleted file mode 100644
index 56c402f3300a3526001c9bf3ccbc15e083202a14..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionReader.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include "TFPersistification/TransFunctionInterpreter.h"
-#include "TFPersistification/GenFunctionInterpreter.h"
-#include "TFPersistification/TransFunctionReader.h"
-
-#include "GeoModelKernel/GeoXF.h"
-
-#include "GeoGenericFunctions/FixedConstant.h"
-#include "GeoGenericFunctions/FunctionProduct.h"
-#include "GeoGenericFunctions/FunctionComposition.h"
-
-#include "GeoPrimitives/CLHEPtoEigenConverter.h" // TODO: to be removed when dropping CLHEP
-
-#include <stdexcept>
-#include <sstream>
-
-TransFunctionReader::TransFunctionReader(const std::string & name, TransFunctionInterpreter * interpreter):
-  m_interpreter(interpreter) {
-  interpreter->add(name, this);
-}
-
-const TransFunctionInterpreter *TransFunctionReader::getInterpreter() const {
-  return m_interpreter;
-}
-
-std::pair<std::string, std::string> TransFunctionReader::split(const std::string & arg) const {
-  size_t comma=0;
-  auto cSearch=arg.begin();
-  while (1) {
-    auto cComma=std::find(cSearch,arg.end(),'|');
-    int cOpen=std::count(arg.begin(),cComma,'{');
-    int cClose=std::count(arg.begin(),cComma,'}');
-    comma=cComma-arg.begin();
-    if (cOpen==cClose) break;
-    cSearch = ++cComma;
-  }
-  std::string op1=arg.substr(0,comma);
-  std::string op2=arg.substr(comma+1);  
-  return std::make_pair(op1,op2);
-}
-TransFunctionReader::~TransFunctionReader () {}
-
-#include "GeoModelKernel/GeoXF.h"                          
-#include "GeoModelKernel/GeoDefinitions.h"
-
-#include <iostream>
-#include <typeinfo>
-
-
-//===========Now come implementations of specific types of transfunction:
-ProductReader::ProductReader(TransFunctionInterpreter *interpreter):TransFunctionReader("GeoXF::Product", interpreter) {}
-PreMultReader::PreMultReader(TransFunctionInterpreter *interpreter):TransFunctionReader("GeoXF::PreMult", interpreter) {}
-PostMultReader::PostMultReader(TransFunctionInterpreter *interpreter):TransFunctionReader("GeoXF::PostMult", interpreter) {}
-PowReader::PowReader(TransFunctionInterpreter *interpreter):TransFunctionReader("GeoXF::Pow", interpreter) {}
-
-
-TFPTR  ProductReader::execute(const std::string & arg) const {
-  auto pair=split(arg);
-  return TFPTR(GeoXF::Product(getInterpreter()->interpret(pair.first).get(), getInterpreter()->interpret(pair.second).get()).clone());
-}
-
-
-TFPTR  PreMultReader::execute(const std::string & arg ) const {
-  auto pair=split(arg);
-  TFPTR p2=getInterpreter()->interpret(pair.second);
-  GeoTrf::Transform3D t1 = scanT(pair.first);
-  return TFPTR(GeoXF::PreMult(t1, p2.get()).clone());
-}
-
-
-TFPTR  PostMultReader::execute(const std::string & arg) const {
-  auto pair=split(arg);
-  TFPTR p1=getInterpreter()->interpret(pair.first);
-  GeoTrf::Transform3D t2=scanT(pair.second);
-  return TFPTR(GeoXF::PostMult(p1.get(), t2).clone());
-}
-
-TFPTR  PowReader::execute(const std::string & arg) const {
-  auto pair=split(arg);
-  return TFPTR(GeoXF::Pow((scanT(pair.first)),*getInterpreter()->getGenFunctionInterpreter()->interpret(pair.second.begin(), pair.second.end())).clone());
-}
-
-GeoTrf::Transform3D TransFunctionReader::scanT(const std::string & exprString) const {
-  size_t start = exprString.find_first_of("[");
-  double x[12];
-  int i=0;
-  while (1) {
-    size_t end   = exprString.find_first_of(";",start+1);
-    std::string atomic=exprString.substr(start+1,end-start);
-    std::istringstream stream(atomic.substr(0,atomic.size()-1));
-    stream >> x[i];
-    start=end;
-    if (atomic.find("]")!=std::string::npos) break;
-    i++;
-  }
-  double & xx=x[0], & xy=x[1], & xz=x[2];
-  double & yx=x[3], & yy=x[4], & yz=x[5];
-  double & zx=x[6], & zy=x[7], & zz=x[8];
-  double & dx=x[9], & dy=x[10], & dz=x[11];
-
-  // TODO: to drop CLHEP, this below should be replaced with Eigen-based Amg objects
-  CLHEP::HepRotation R;
-  R.set(CLHEP::Hep3Vector(xx,yx,zx),
-		  CLHEP::Hep3Vector(xy,yy,zy),
-		  CLHEP::Hep3Vector(xz,yz,zz));
-  CLHEP::Hep3Vector D(dx,dy,dz);
-  HepGeom::Transform3D xf(R, D);
-
-  return Amg::CLHEPTransformToEigen(xf);
-}
diff --git a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionRecorder.cpp b/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionRecorder.cpp
deleted file mode 100644
index 9263194e25b358bfce2568907ca4254b52c8aa06..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModel/GeoModelStandalone/TFPersistification/src/TransFunctionRecorder.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "TFPersistification/TransFunctionPersistifier.h"
-#include "TFPersistification/GenFunctionPersistifier.h"
-#include "TFPersistification/TransFunctionRecorder.h"
-
-// This is a data recorder. It breaks encapsulation. Normal. ==========//
-#include "GeoModelKernel/GeoXF.h"
-//=====================================================================//
-
-
-#include <stdexcept>
-TransFunctionRecorder::TransFunctionRecorder(const std::type_info & info, TransFunctionPersistifier * persistifier):
-  m_persistifier(persistifier) {
-  persistifier->add(info, this);
-}
-
-const TransFunctionPersistifier *TransFunctionRecorder::getPersistifier() const {
-  return m_persistifier;
-}
-
-TransFunctionRecorder::~TransFunctionRecorder () {}
-
-#include "GeoModelKernel/GeoXF.h"                          //
-
-#include "GeoModelKernel/GeoDefinitions.h"
-#include "GeoPrimitives/CLHEPtoEigenConverter.h"
-
-#include <iostream>
-#include <typeinfo>
-
-
-//===========Now come implementations of specific types of transfunction:
-ProductRecorder::ProductRecorder(TransFunctionPersistifier *persistifier):TransFunctionRecorder(typeid(GeoXF::Product),persistifier) {}
-PreMultRecorder::PreMultRecorder(TransFunctionPersistifier *persistifier):TransFunctionRecorder(typeid(GeoXF::PreMult),persistifier) {}
-PostMultRecorder::PostMultRecorder(TransFunctionPersistifier *persistifier):TransFunctionRecorder(typeid(GeoXF::PostMult),persistifier) {}
-PowRecorder::PowRecorder(TransFunctionPersistifier *persistifier):TransFunctionRecorder(typeid(GeoXF::Pow),persistifier) {}
-
-void ProductRecorder::execute( const GeoXF::Function & function) const {
-  const GeoXF::Product * ptr= dynamic_cast<const GeoXF::Product *> (&function);
-  if (!ptr) throw std::runtime_error("Error in ProductRecorder:  wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-
-  stream << "GeoXF::Product" << "{";
-  getPersistifier()->persistify(*ptr->arg1());
-  stream << "|";
-  getPersistifier()->persistify(*ptr->arg2());
-  stream << "}";
-  return;
-}
-
-
-void PreMultRecorder::execute( const GeoXF::Function & function) const {
-  const GeoXF::PreMult * ptr= dynamic_cast<const GeoXF::PreMult *> (&function);
-  if (!ptr) throw std::runtime_error("Error in PreMultRecorder:  wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "GeoXF::PreMult" << "{";
-  const HepGeom::Transform3D & tPtr = Amg::EigenTransformToCLHEP(ptr->arg1());
-  stream << "Transform["
-	 << tPtr.xx() << ";" << tPtr.xy() << ";" << tPtr.xz() << ";"
-	 << tPtr.yx() << ";" << tPtr.yy() << ";" << tPtr.yz() << ";"
-	 << tPtr.zx() << ";" << tPtr.zy() << ";" << tPtr.zz() << ";"
-	 << tPtr.dx() << ";" << tPtr.dy() << ";" << tPtr.dz() << "]";
-  stream << "|";
-  getPersistifier()->persistify(*ptr->arg2());
-  stream << "}";
-  return;
-}
-
-
-void PostMultRecorder::execute( const GeoXF::Function & function) const {
-  const GeoXF::PostMult * ptr= dynamic_cast<const GeoXF::PostMult *> (&function);
-  if (!ptr) throw std::runtime_error("Error in PostMultRecorder:  wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "GeoXF::PostMult" << "{";
-  getPersistifier()->persistify(*ptr->arg1());
-  stream << "|";
-  const HepGeom::Transform3D & tPtr = Amg::EigenTransformToCLHEP(ptr->arg2());
-  stream << "Transform["
-	 << tPtr.xx() << ";" << tPtr.xy() << ";" << tPtr.xz() << ";"
-	 << tPtr.yx() << ";" << tPtr.yy() << ";" << tPtr.yz() << ";"
-	 << tPtr.zx() << ";" << tPtr.zy() << ";" << tPtr.zz() << ";"
-	 << tPtr.dx() << ";" << tPtr.dy() << ";" << tPtr.dz() << "]";
-  stream << "}";
-  return;
-}
-
-
-
-void PowRecorder::execute( const GeoXF::Function & function) const {
-  const GeoXF::Pow * ptr= dynamic_cast<const GeoXF::Pow *> (&function);
-  if (!ptr) throw std::runtime_error("Error in PowRecorder:  wrong function type");
-  std::ostringstream & stream = getPersistifier()->getStream();
-  stream << "GeoXF::Pow" << "{";
-  const HepGeom::Transform3D & tPtr = Amg::EigenTransformToCLHEP(ptr->transform());
-  stream << "Transform["
-	 << tPtr.xx() << ";" << tPtr.xy() << ";" << tPtr.xz() << ";"
-	 << tPtr.yx() << ";" << tPtr.yy() << ";" << tPtr.yz() << ";"
-	 << tPtr.zx() << ";" << tPtr.zy() << ";" << tPtr.zz() << ";"
-	 << tPtr.dx() << ";" << tPtr.dy() << ";" << tPtr.dz() << "]";
-  stream << "|";
-  getPersistifier()->getGenFunctionPersistifier()->persistify(*ptr->function());
-  stream << getPersistifier()->getGenFunctionPersistifier()->getCodedString();
-  stream << "}";
-  return;
-}