Belle II Software development
GeoVXDServiceCreator.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 GEOVXDSERVICECREATOR_H
10#define GEOVXDSERVICECREATOR_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/VXDServiceGeometryPar.h>
20
21class G4Material;
22
23namespace Belle2 {
29 namespace VXD {
30
33 private:
36
38 void createGeometry(const VXDServiceGeometryPar& parameters, G4LogicalVolume& topVolume, geometry::GeometryTypes type);
39 public:
42
45 virtual void create(const GearDir& content, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
46 {
48 createGeometry(config, topVolume, type);
49 }
50
53 virtual void createPayloads(const GearDir& content, const IntervalOfValidity& iov) override
54 {
56 importObj.construct(createConfiguration(content));
57 importObj.import(iov);
58 }
59
61 virtual void createFromDB(const std::string& name, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
62 {
64 if (!dbObj) {
65 // Check that we found the object and if not report the problem
66 B2FATAL("No configuration for " << name << " found.");
67 }
68 createGeometry(*dbObj, topVolume, type);
69 }
70
71 private:
72
74 G4Material* m_defaultMaterial {0};
75 };
76 } // namespace VXD
78} //namespace Belle2
79
80#endif /* GEOVXDSERVICECREATOR_H */
bool import(const IntervalOfValidity &iov)
Import the object to database.
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
A class that describes the interval of experiments/runs for which an object in the database is valid.
The Class for VXD service geometry.
virtual void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Create the configuration objects and save them in the Database.
void createGeometry(const VXDServiceGeometryPar &parameters, G4LogicalVolume &topVolume, geometry::GeometryTypes type)
Create the geometry from a parameter object.
GeoVXDServiceCreator()=default
Default constructor is sufficient in this case.
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...
VXDServiceGeometryPar createConfiguration(const GearDir &param)
Create a parameter object from the Gearbox XML parameters.
virtual void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Create the geometry from the Database.
G4Material * m_defaultMaterial
Default Material, inherited from topVolume.
Pure virtual base class for all geometry creators.
Definition CreatorBase.h:28
Namespace to provide code needed by both Vertex Detectors, PXD and SVD, and also testbeam telescopes.
Definition GeoCache.h:34
GeometryTypes
Flag indicating the type of geometry to be used.
Abstract base class for different kinds of events.