Skip to content
Snippets Groups Projects
Commit 9109fb2d authored by Joseph Boudreau's avatar Joseph Boudreau
Browse files

Merge branch 'master-introduce-GeoVStore' into 'master'

Introduced first version of GeoVStore

See merge request !5
parents e4ab8ad6 a5832a65
No related branches found
No related tags found
1 merge request!5Introduced first version of GeoVStore
Pipeline #1489880 passed
......@@ -6,7 +6,7 @@ project( "GeoModelCore" VERSION 3.1.1 LANGUAGES CXX )
# Set default build options.
set( CMAKE_BUILD_TYPE "Release" CACHE STRING "CMake build mode to use" )
set( CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard used for the build" )
set( CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard used for the build" )
set( CMAKE_CXX_EXTENSIONS FALSE CACHE BOOL "(Dis)allow using GNU extensions" )
# Make the module directory visible to CMake.
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef GEOMODELKERNEL_GEOVGEOMETRYPLUGIN_H
......@@ -8,14 +8,15 @@
/**
* @class: GeoVGeometryPlugin
*
* @brief Abstact Base Class for a geometry plugin. The geometry
* plugin builds the raw geometry, and publishes a list of
* of alignable transforms and full physical volumes
* @brief Abstact Base Class for a geometry plugin.
* The geometry plugin builds the raw geometry
*/
#include "GeoModelKernel/GeoVPhysVol.h"
class GeoPhysVol;
class GeoVStore;
class GeoVGeometryPlugin
{
public:
......@@ -23,7 +24,7 @@ class GeoVGeometryPlugin
virtual ~GeoVGeometryPlugin();
// Create the system.
virtual void create (GeoPhysVol* world) = 0;
virtual void create (GeoPhysVol* world, GeoVStore* store=nullptr) = 0;
private:
GeoVGeometryPlugin(const GeoVGeometryPlugin &right)=delete;
......
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef GEOMODELKERNEL_GEOVSTORE_H
#define GEOMODELKERNEL_GEOVSTORE_H
/**
* @class GeoVStore
*
* @brief Abstract base class for a generic GeoModel store
* The interface allows to store pointers to two types of objects
* 1. Full Physical Volumes
* 2. Alignable Transforms
*
* A pointer to the store object can be passed to GeoVGeometryPlugin::create().
* This allows for storing pointers to full physical volumes and alignable transforms
* while the plugin is building raw detector geometries. The stored pointers can
* be used later for constructing the readout geometry layer, and for applying
* alignment corrections
*/
#include <any>
class GeoAlignableTransform;
class GeoVFullPhysVol;
class GeoVStore
{
public:
GeoVStore() {}
virtual ~GeoVStore() {}
virtual void storeAXF(GeoAlignableTransform* axf, std::any key) = 0;
virtual void storeFPV(GeoVFullPhysVol* fpv, std::any key) = 0;
};
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment