Belle II Software  release-08-01-10
GeoHeavyMetalShieldCreator.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #ifndef GEOHEAVYMETALSHIELDCREATOR_H
10 #define GEOHEAVYMETALSHIELDCREATOR_H
11 
12 #include <geometry/CreatorBase.h>
13 
14 #include <framework/logging/Logger.h>
15 #include <framework/database/DBObjPtr.h>
16 #include <framework/database/DBImportObjPtr.h>
17 #include <framework/database/IntervalOfValidity.h>
18 
19 #include <vxd/dbobjects/HeavyMetalShieldGeometryPar.h>
20 
21 namespace Belle2 {
28  namespace VXD {
29 
32  private:
35 
37  void createGeometry(const HeavyMetalShieldGeometryPar& parameters, G4LogicalVolume& topVolume, geometry::GeometryTypes type);
38 
39  public:
42  virtual void create(const GearDir& content, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
43  {
45  createGeometry(config, topVolume, type);
46  }
47 
50  virtual void createPayloads(const GearDir& content, const IntervalOfValidity& iov) override
51  {
53  importObj.construct(createConfiguration(content));
54  importObj.import(iov);
55  }
56 
58  virtual void createFromDB(const std::string& name, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
59  {
61  if (!dbObj) {
62  // Check that we found the object and if not report the problem
63  B2FATAL("No configuration for " << name << " found.");
64  }
65  createGeometry(*dbObj, topVolume, type);
66  }
67  };
68  }
70 }
71 
72 #endif /* GEOHEAVYMETALSHIELDCREATOR_H */
bool import(const IntervalOfValidity &iov)
Import the object to database.
Definition: DBImportBase.cc:36
Class for importing a single object to the database.
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
GearDir is the basic class used for accessing the parameter store.
Definition: GearDir.h:31
The Class for VXD Heavy Metal Shield.
A class that describes the interval of experiments/runs for which an object in the database is valid.
The creator for the HeavyMetalShield geometry of the Belle II detector.
virtual void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Create the configuration objects and save them in the Database.
virtual void create(const GearDir &content, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
The old create member: create the configuration object(s) on the fly and call the geometry creation r...
HeavyMetalShieldGeometryPar createConfiguration(const GearDir &param)
Create a parameter object from the Gearbox XML parameters.
void createGeometry(const HeavyMetalShieldGeometryPar &parameters, G4LogicalVolume &topVolume, geometry::GeometryTypes type)
Create the geometry from a parameter object.
virtual void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Create the geometry from the Database.
Pure virtual base class for all geometry creators.
Definition: CreatorBase.h:28
GeometryTypes
Flag indiciating the type of geometry to be used.
Abstract base class for different kinds of events.