diff --git a/GeoModelExamples/HelloGeoRead/main.cpp b/GeoModelExamples/HelloGeoRead/main.cpp deleted file mode 100644 index 896e6c8cd667a9e22f312485a819d5d3b3d5d05a..0000000000000000000000000000000000000000 --- a/GeoModelExamples/HelloGeoRead/main.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration - -/* - * HelloGeoRead.cpp - * - * Author: Riccardo Maria BIANCHI @ CERN - * Created on: Nov, 2018 - * Updated on: Jul, 2023 - * - */ - -// GeoModel includes -//#include "GeoModelDBManager/GMDBManager.h" -#include "GeoModelIOHelpers/GMIO.h" - -#include "GeoModelKernel/GeoBox.h" -#include "GeoModelKernel/GeoFullPhysVol.h" -#include "GeoModelKernel/GeoNameTag.h" -#include "GeoModelKernel/GeoPhysVol.h" -#include "GeoModelRead/ReadGeoModel.h" - -// C++ includes -#include <cstdlib> // EXIT_FAILURE -#include <fstream> -#include <iostream> - -// Units -#include "GeoModelKernel/Units.h" -#define SYSTEM_OF_UNITS \ - GeoModelKernelUnits // so we will get, e.g., 'GeoModelKernelUnits::cm' - -GeoVPhysVol* createTheWorld(GeoVPhysVol* world) { - if (world == nullptr) { - //-----------------------------------------------------------------------------------// -// Define the materials that we shall use. // -// ----------------------------------------------------------------------------------// - -// Define the units -#define gr SYSTEM_OF_UNITS::gram -#define mole SYSTEM_OF_UNITS::mole -#define cm3 SYSTEM_OF_UNITS::cm3 - - // Define the chemical elements - GeoElement* Nitrogen = - new GeoElement("Nitrogen", "N", 7.0, 14.0067 * gr / mole); - GeoElement* Oxygen = - new GeoElement("Oxygen", "O", 8.0, 15.9995 * gr / mole); - GeoElement* Argon = - new GeoElement("Argon", "Ar", 18.0, 39.948 * gr / mole); - GeoElement* Hydrogen = - new GeoElement("Hydrogen", "H", 1.0, 1.00797 * gr / mole); - - // Define the materials - double densityOfAir = 0.001214 * gr / cm3; - GeoMaterial* air = new GeoMaterial("Air", densityOfAir); - air->add(Nitrogen, 0.7494); - air->add(Oxygen, 0.2369); - air->add(Argon, 0.0129); - air->add(Hydrogen, 0.0008); - air->lock(); - - const GeoBox* worldBox = - new GeoBox(1000 * SYSTEM_OF_UNITS::cm, 1000 * SYSTEM_OF_UNITS::cm, - 1000 * SYSTEM_OF_UNITS::cm); - const GeoLogVol* worldLog = new GeoLogVol("WorldLog", worldBox, air); - world = new GeoPhysVol(worldLog); - } - return world; -} - -int main(int argc, char* argv[]) { - if (argc != 2) { - fprintf(stderr, "\nERROR!\nUsage: %s <geometry.db>\n\n", argv[0]); - return 1; - } - - // Get the input SQLite '.db' file containing the geometry - std::string line; - std::string fileName; - fileName = argv[1]; - std::cout << "Using this SQLite '.db' file:" << fileName << std::endl; - - - - - //// check if DB file exists. If not, return. - //std::ifstream infile(fileName.c_str()); - //if (!infile.good()) { - //std::cout << "\n\tERROR!! A '" << fileName - //<< "' file does not exist!! Please, check the path of the " - //"input file before running this program. Exiting..."; - //exit(EXIT_FAILURE); - //} - //infile.close(); - - - - // Get a reader to explore/print the tables in the GeoModel DB - GeoModelIO::ReadGeoModel geoReader = GeoModelIO::IO::getReaderDB(fileName); - std::cout << "Reading records from the imported geometry DB file..." - << std::endl; - geoReader.printDBTable("SerialIdentifiers"); - geoReader.printDBTable("IdentifierTags"); - - - - // Get the 'world' volume from the GeoModel DB - std::cout << "Picking the 'World' volume from the geometry DB file..." - << std::endl; - GeoVPhysVol *world = GeoModelIO::IO::loadDB(fileName); - std::cout << "'World' volume loaded." << std::endl; - - //// open the DB - //GMDBManager* db = new GMDBManager(fileName); - //[> Open database <] - //if (db->checkIsDBOpen()) { - //std::cout << "OK! Database is open!\n"; - //} else { - //std::cout << "Database is not open!\n"; - //// return; - //throw; - //} - - // -- testing the input database - // std::cout << "Printing the list of all GeoMaterial nodes" << std::endl; - // db->printAllMaterials(); - // std::cout << "Printing the list of all GeoElement nodes" << std::endl; - // db->printAllElements(); - - //[> setup the GeoModel reader <] - //GeoModelIO::ReadGeoModel geoReader = GeoModelIO::ReadGeoModel(db); - //std::cout << "OK! ReadGeoModel is set." << std::endl; - - //[> build the GeoModel geometry <] - //GeoVPhysVol* dbPhys = - //geoReader.buildGeoModel(); // builds the whole GeoModel tree in memory - - std::cout << "Reading records from the imported geometry DB file..." - << std::endl; - geoReader.printDBTable("SerialIdentifiers"); - geoReader.printDBTable("IdentifierTags"); - - //// create the world volume container and - //// get the 'world' volume, i.e. the root volume of the GeoModel tree - //std::cout << "Getting the 'world' GeoVPhysVol, i.e. the root volume of the " - //"GeoModel tree, which can be either a GeoPhysVol or a " - //"GeoFullPhysVol (both inherit from GeoVPhysVol)" - //<< std::endl; - //GeoVPhysVol* world = createTheWorld(dbPhys); - 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; - - // --- testing the imported Geometry - - // 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::cout << " and it has " << childVol->getNChildVols() - << " child volumes" << 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::cout << " and it has " << childVol->getNChildVols() - << " child volumes" << std::endl; - } - } else if (dynamic_cast<const GeoNameTag*>(&(*(nodeLink)))) { - std::cout << "\t" - << "the child n. " << idx << " is a GeoNameTag" - << std::endl; - const GeoNameTag* childVol = - dynamic_cast<const GeoNameTag*>(&(*(nodeLink))); - std::cout << "\t\t GeoNameTag's name: " << childVol->getName() - << std::endl; - } else if (dynamic_cast<const GeoMaterial*>(&(*(nodeLink)))) { - std::cout << "\t" - << "the child n. " << idx << " is a GeoMaterial" - << std::endl; - const GeoMaterial* childVol = - dynamic_cast<const GeoMaterial*>(&(*(nodeLink))); - std::cout << "\t\t GeoMaterial's name: " << childVol->getName() - << std::endl; - std::cout << "\t\t GeoMaterial's number of elements: " - << childVol->getNumElements() << std::endl; - } - } - - std::cout << "Everything done." << std::endl; - - // return app.exec(); - return 0; -}