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.
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
A class that describes the interval of experiments/runs for which an object in the database is valid.
The Class for VXD service geometry.
The creator for the VXD Service 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.
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
GeometryTypes
Flag indiciating the type of geometry to be used.
Abstract base class for different kinds of events.